0
將值0xB33C分配給寄存器$ t0。
對此的答案是:ori $t0, $zero, 0xB33C
但是,我很困惑爲什麼。我認爲答案是addi $t0, $t0, 0xB33C
。
有人可以向我解釋這個嗎?我不確定ori
指令是如何工作的。
將值0xB33C分配給寄存器$ t0。
對此的答案是:ori $t0, $zero, 0xB33C
但是,我很困惑爲什麼。我認爲答案是addi $t0, $t0, 0xB33C
。
有人可以向我解釋這個嗎?我不確定ori
指令是如何工作的。
我想答案應該是
addi $t0, $t0, 0xB33C
也許你的意思是addi $t0, $zero, 0xB33C
?無論如何,在這種情況下,addi
的問題在於它對指令字中編碼的16位立即數進行了符號擴展。所以你最終會得到0xFFFFB33C
。
ori
執行按位或運算,這意味着如果在任何輸入中設置了相應的位,結果中的每個位都將被置位。造成這種情況的真值表:
IN OUT
----------
0 0 -> 0
0 1 -> 1
1 0 -> 1
1 1 -> 1
正如你可以看到,執行逐位或零和一些值X之間,會給你X的結果。因此ori $t0,$zero,0xB33C
爲您提供$t0 = 0 bitwise OR 0xB33C
,即$t0 = 0xB33C
。
謝謝!我現在知道了! – Josh 2015-03-02 21:30:03