私はアセンブリのコーディングが初めてで、次のCコードをMIPSアセンブリに転送するという問題に遭遇しました。CからMIPSへのアセンブリの混乱
b[8] = b[i-j] + x ;
及び変数はI、J、Xは、レジスタ7,4及び15であり、配列bのベースアドレスは2870220小数です。
私は、次の解決策
lui $2, 0x002B
ori $2, $2, 0xCBCC
sub $3, $7, $4
add $3, $2, $3
lw $12, 0($3)
addu $12, $12, $15
sw $12, 32($2)
を思い付いたが、私は答えをチェックすると、減算命令の後
sll $3, $3, 2
の一つの追加の行がありました。
誰かが$ 3の内容に4を掛けなければならない理由を説明してください。
配列はワードサイズ(32ビット)で、バイトサイズではありませんか? –
問題は配列について何も指定しません。 –
それはおそらくワードサイズです。実際に私はmipsの構文を忘れています、lwはロード・ワード・イエスですか? 32ビットのもの?ロードバイトは何ですか?ポンド? lwが32ビットの場合は、オフセットを1ワードに合わせる必要があります。したがって、4を掛けてアドレスにオフセットを取得してください。 –