2010-02-22 57 views
12

如果我想從一個存儲器,基址是在$ A0和關閉設置$ T2裝載值,我爲什麼不能做到以下幾點:MIPS負載詞的語法

lw $s2, $a1($t2) 

所以什麼相當於上面的表達式?

回答

14

你不能那樣做,因爲沒有MIPS指令編碼支持這樣的事情。你需要給自己做加法:

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

lw指令編碼是這樣的:

1000 11ss ssst tttt iiii iiii iiii iiii 

哪裏sssss是源寄存器數量,ttttt是目標寄存器號碼,iiiiiiiiiiiiiiii是即時。在編碼中沒有空間(也沒有替代指令編碼),它們使用兩個寄存器來生成存儲器地址。這將獲得從上面的例子中所編碼的特定機器指令是:

1000 1100 1101 0010 0000 0000 0000 0000 

由於即時是0$s2是寄存器18$a2是寄存器6

+2

我愛mips ...太簡單了 – Polaris878

+1

@ Polaris878,Yay for RISC! –