始めに
nop
値代入命令
加減算命令
ストア命令
ロード命令
ジャンプ命令
分岐命令
始めに
レジスタについて
何か命令を覚えないと始まらないわけで
最低でもこれだけは覚えとけって命令
判りやすくするために分類したから正しい分類じゃないかも
r1とかはレジスタのことね
その他分からないところは調べるとか
nop
・
nop
nop
なにもしない
なにも起こらない
備考
後半で出てくる遅延を潰すときくらいにしか使わない
実際はsll zero,zero,0みたいな動作をしている(多分)
値代入命令
・
lui
lui r1,
0xaaaa
r1の上位16bitに
0xaaaaを代入、下位16bitはクリア
要するにr1に
0xaaaa0000を代入ってこと
・
ori
ori r1,r0,
0xbbbb
r1にr0と
0xaaaaの論理和を代入
r1=r0+
0xaaaaってこと
0xaaaaは符号拡張しない
・
li
li r1 0xaaaa
r1に0xaaaaを代入
ori r1,zero,0xaaaaが変化したもの
備考
lui,oriを使ってアドレス指定ができる
lui r1,0x0aaa
ori r1,r1,0xbbbb
これでr1に0x0aaabbbbが入る
加減算命令
・
addiu
addiu r1,r0,
0xaaaa
r1にr0と
0xaaaaの和を代入
r0+
0xaaaa
基本oriと一緒だがこちらは符号拡張する
なので減算命令としても使える
・
addu
addu r1,r0,r2
r1にr0とr2の和を代入
r1=r0+r2
符号拡張する
ストア命令
・
sb
sb r1,0xaaaa(r0)
r0+0xaaaaのアドレスにr1を8bitでストア(書き込み)
0xaaaaは符号拡張する
・
sh
sh r1,0xaaaa(r0)
r0+0xaaaaのアドレスにr1を16bitでストア(書き込み)
0xaaaaは符号拡張する
・
sw
sw r1,0xaaaa(r0)
r0+0xaaaaのアドレスにr1を32bitでストア(書き込み)
0xaaaaは符号拡張する
備考
違うのは書きこむ量だけ
lui r0,0x0aaa
ori r0,r0,0xaaaa
sw r1,0x0000(r0)
これで0x0aaaaaaaにr1を32bitで書き込み
ロード命令
・
lb
lb r1,0xaaaa(r0)
r0+0xaaaaのアドレスにr1を8bitでロード(読み込み)
0xaaaaは符号拡張する
・
lh
lh r1,0xaaaa(r0)
r0+0xaaaaのアドレスにr1を16bitでロード(読み込み)
0xaaaaは符号拡張する
・
lw
lw r1,0xaaaa(r0)
r0+0xaaaaのアドレスにr1を32bitでロード(読み込み)
0xaaaaは符号拡張する
備考
違うのは読み込む量だけ
ストア命令とは反対の意味の命令
lui r0,0x0aaa
ori r0,r0,0xaaaa
lw r1,0x0000(r0)
lw r2,0x0000(r1)
これでポインタコードと同じ効果
0x6aaaaaaa 0xr2
0x00020001 0x00000000
ジャンプ命令
・
j
j 0x0aaaaaaa
アドレス0x0aaaaaaaにジャンプ
・
jal
jal 0x0aaaaaaa
アドレス0x0aaaaaaaにジャンプ
このとき復帰アドレスがraに保存される
・
jr ra
jr ra 0x0aaaaaaa
raに書きこまれているアドレスにジャンプ
備考
ジャンプ系の命令は遅延といって、ジャンプする前に次の命令も実行しまう
例
addiu r1,r10xFFFF
sw r1,0x0000(r0)
j 0x0aaaaaaa
このようなときjの一つ後ろも実行されるので
addiu r1,r10xFFFF
sw r1,0x0000(r0)
j 0x0aaaaaaa
nop
このように遅延を潰す必要がある
または、この性質を利用し
addiu r1,r10xFFFF
j 0x0aaaaaaa
sw r1,0x0000(r0)
こうすることもできる
原則として遅延が発生するものは連続して実行できないので
j 0x0aaaaaaa
j 0x0bbbbbbb
こうしたい場合は
j 0x0aaaaaaa
nop
j 0x0bbbbbbb
nop
このように一命令分空けなければならない
分岐命令
・
beq
beq r0,r1,0xaaaa
r0とr1を比較し、数値が同じなら分岐
・
bne
bne r0,r1,0xaaaa
r0とr1を比較し、数値が違ければ分岐
備考
beq zero,r1,0x0000とすると
値がゼロのとき分岐するようにできる
何処へ分岐するかは0xaaaaで決まる
殴り書きで書いたが、求め方…分岐までの距離÷4-1
また、ジャンプ命令と同じく遅延が発生する
CopyRight Team-M.G.C Co.,ltd.