2012-03-13 247 views
0

如果我寫MIPS .word澄清

.data       
one: .word 1 
在我的計劃

,後來我寫

beq $a3,one,loop1 

將它的工作?即確實遲到標籤作爲參數?

回答

1

號您必須將這個詞第一次加載到寄存器:lw $t0, one

MIPS是一個加載/存儲架構。從內存獲取值的唯一方法是使用加載指令。

0

其實,我最後做的:

beq $a3, 1, basecase #check if value at $a3 is equal to 1 

這句法也適用。不一定必須有2個寄存器。

1

使用beq $a3, 1, basecase完全錯誤。它碰巧爲你工作,因爲寄存器1($ at)碰巧等於寄存器$ a3。這種共同點並不令人感到意外,因爲MIPS彙編器使用$at作爲臨時寄存器。

beq指令的二進制編碼使用:位31:26作爲操作碼(000100);對於第一個寄存器編號,位25:21;對於第二個寄存器編號,位20:16;位15:0作爲地址偏移量。這條指令沒有立即值的規定。