我试图弄清楚如何创建一个跳转指令代码,并拥有正确的代码,但我不确定为什么。
所以,如果我有这个:
addi $s1, $s1, 0
addi $s1, $s1, 0
lui $s1, 0x1001
top: bne $s1, $s2, end
addi $s1, $s1, 1
end: j top我想弄清楚j top的跳转指令
正确答案是0x08100003。我只是不知道该怎么做。
top的地址为0x0040000C。
一种简单快捷的方法是计算出x*4=目标地址。因此,x*4=4 (1)和x*4= 12 (3)。所以,我明白为什么指令中有一个1和一个3。
jump的操作码是2hex,所以我们从000010(操作码的6位)开始。那我就不知道下一步该怎么做。我知道指令的末尾是3,但是我怎么知道把1放在哪里呢?
我希望这是有意义的。谢谢你的帮助。
发布于 2014-06-12 14:03:42
J的指令字由值为%000010的6位操作码组成,后跟26位,其中包含目标地址的低28位,右移2位。
如果我们取0x040000C,将其右移2位,并以二进制形式显示结果,只有较低的26位才能得到%00000100000000000000000011。
让我们把操作码位放在前面,这样就得到了%00001000000100000000000000000011。如果我们将这个数字分成四位一组,就更容易看到十六进制的表示形式:
0000 1000 0001 0000 0000 0000 0000 0011
0 8 1 0 0 0 0 3 https://stackoverflow.com/questions/24175651
复制相似问题