【问题标题】:MIPS: Figuring out a Jump instruction codeMIPS:找出跳转指令代码
【发布时间】:2014-06-12 14:03:41
【问题描述】:

我试图弄清楚如何创建跳转指令代码并拥有正确的代码,但我不知道为什么。

所以,如果我有这个:

        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?

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

【问题讨论】:

    标签: mips


    【解决方案1】:

    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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 2019-04-26
      相关资源
      最近更新 更多