命令(Instruction): コンピュータの言葉
命令セット(Instruction set): コンピュータの語彙(言葉の集まり、全体)
ここでは、MIPS Computer社の命令セットを取り扱う。MIPS命令セットは、ソニーPlayStation、任天堂Nintendo64、シリコン・グラフィックス社のワークステーションで用いられている。
add a, b, c #bとcの和をaに収める
add a, a, d #結果として、b+c+dの和を、aに収める
add a, a, e #結果として、b+c+d+eの和を、aに収める
設計原則1:単純性は規則性につながる
sub a, b, c #b-cをaに収める
例題P98-1
例題P98-2
int a, b, mem[100], *p;
レジスタの数に限りがある理由は、
設計原則2:小さければ小さいほど高速になる
図:後半の授業で取り扱う小規模MIPSの図
例題P100
(答え)メモリに蓄える。しかし、算術演算はレジスタに対してしか行えない。
ということで、メモリとレジスタ間のデータ転送命令が必要となる。
メモリ内のワードにアクセスするには、命令中でメモリのアドレスを指定しなければならない。
例題P101
ハードウエアとソフトウエアのインターフェース
例題P103-1
例題P103−2
レジスタ名 | $zero | $t0 | $t1 | ... | $t7 | $s0 | $s1 | ... | $s7 | ||
レジスタ番号 | 0 | ... | 8 | 9 | ... | 15 | 16 | 17 | ... | 23 | ... |
例題P106
例題P108
beq $s1, $s2, L1 # $s1と$s2が等しければ、L1のラベルの命令へプログラム実行を分岐
bne $s1, $s2, L1 # $s1と$s2が等しくなければ、L1ラベルの命令へプログラム実行を分岐
j L2 # 無条件にL2ラベルの命令へプログラム実行を分岐
slt $t0, $s0, $s1 # $s0 < $s1ならば、$t1を1にする
例題P112
例題P113
例題P116
1)変数hがレジスタ$s2、配列Aのベースアドレスがレジスタ$s3に対応するとして、下記のCコードをコンパイルした結果のアセンブリコードはどうなるか?
A[1] = h + A[0];
A[2] = h + A[1];
2)P108の例題を参照して、下記のアセンブリコードを機械語に変更せよ
lw $t1, 1200($t2)
add $t3, $s2, $t1
sw $t3, 1200($t2)
1)演習問題3.9
2)演習問題3.11
以上