13

ベースアドレスが $a0 でオフセット $t2 にあるメモリから値をロードしたい場合、次のようにできないのはなぜですか:

lw  $s2, $a1($t2)

では、上記の式に相当するものは何ですか?

4

1 に答える 1

14

そのようなことをサポートする MIPS 命令エンコーディングがないため、それはできません。自分で追加する必要があります:

add $a2, $a1, $t2
lw  $s2, 0($a2) 

命令エンコーディングは次のlwようになります。

1000 11ss ssst tttt iiii iiii iiii iiii

sssssはソース レジスタ番号、tttttは宛先レジスタ番号、は即値iiiiiiiiiiiiiiiiです。2 つのレジスタを使用してメモリ アドレスを生成するエンコーディング (および代替命令エンコーディングがない) には余裕がありません。上記の例からエンコードされる特定のマシン命令は次のとおりです。

1000 1100 1101 0010 0000 0000 0000 0000

即値は isであるため0$s2is register18であり、$a2is register6です。

于 2010-02-22T23:03:40.273 に答える