MIPS:找出Ju​​mp指令代码

时间:2014-06-12 02:39:23

标签: mips

我试图找出如何创建跳转指令代码并拥有正确的代码,但我不确定原因。

所以,如果我有这个:

        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。

跳转的操作码是2hex,所以我们从0000 10开始(操作码为6位)。然后我不确定接下来该做什么。我知道指令的结尾将是3,但我怎么知道将1放在哪里?

我希望这是有道理的。谢谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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