C言語はわかるけどMIPSはわからない人へ
C言語にはない考え方
レジスタの話
まだ書いてない
記述のない命令
コンピュータが勝手にやってくれるのでCに対応する記述はありません.
lw(Load Word)
配列を読み込む
C言語
a = x[8];
MIPS
lw $t0, 32($t1)
mv $t1 , $t0 # <- a = x[8];
# $t0はx[8]を仮に保存しておくレジスタ
# $t1はxの先頭を指すアドレス
# ()の前に添字*4の数字を書く
sw(StoreWord)
配列に書き込む
C言語
x[10] = a;
MIPS
sw $t1, 400($t0)
item[i]
の場合,
MIPS
対訳 MIPS
代入
C言語
a = b;
MIPS
move $t0, $t1
## 擬似言語
こう書けばしたいことできるけど読む人になにするかわかりにくいから擬似言語にしようって感じー
擬似言語を使わずに書くと,
MIPS
add $t0, $t1, $zero
となるんだけどaddしたいわけじゃないし,この命令でしたいことがわかりにくい.
加法
C言語
a = b + c;
a = b + 4;
MIPS
add $t0 , $t1 , $t2
addi $t0, $t1, 4
ループ
C言語
for(i = 0; i < 10; i++){
item[i] = 0;
}
MIPS
move $t0, $zero
loop:
sw $zero,
exit:
if
C言語
MIPS