将值0xB33C分配给寄存器$ t0。
答案是:ori $t0, $zero, 0xB33C
但是,我很困惑。我认为答案是addi $t0, $t0, 0xB33C
。
有人可以向我解释一下吗?我不确定ori
指令是如何工作的。
答案 0 :(得分:1)
我认为答案是
addi $t0, $t0, 0xB33C
也许你的意思是addi $t0, $zero, 0xB33C
?无论如何,在这种情况下addi
的问题在于它对指令字中编码的16位立即值进行符号扩展。所以你最终会得到0xFFFFB33C
。
ori
执行按位OR,这意味着如果在任何输入中设置了相应的位,则结果中的每个位都将置1。真相表是:
IN OUT
----------
0 0 -> 0
0 1 -> 1
1 0 -> 1
1 1 -> 1
正如您可能看到的那样,在零和某个值X之间执行按位OR,将得到X作为结果。因此,ori $t0,$zero,0xB33C
会为您提供$t0 = 0 bitwise OR 0xB33C
,即$t0 = 0xB33C
。