2016-09-08 239 views
0

有人可以解釋之間有什麼區別:MIPS在這個指令上的區別?

lw $t5, $t3 

lw $t5, ($t3) 

lw $t5, 0($t3) 

第一個1:第二個工作預期。但爲什麼第三個與第二個不同呢?

回答

1

除非你的彙編是非常寬容的,第一個例子是一個語法錯誤:

lw $t5, $t3 

兩個spimmars舉報。 lw指令是「從內存加載」。如果你想設置的$t5$t3內容的內容,你會希望move僞操作:

move $t5, $t3 

這是簡寫:

addu $t5, $t3, $zero 

lw的正確用法是:

lw <dest_reg>,<offset>(<source_reg>) 

這需要源寄存器的內容,增加了簽署 [16位]偏移量來產生最終地址。它將從該地址獲取32位字,並將獲取的值放入目標寄存器。

如果<offset>是零,也可以離開,所以下面的兩個是等效的:

lw $t5, 0($t3) 
lw $t5, ($t3)