我试图弄清楚如何创建跳转指令代码并拥有正确的代码,但我不确定为什么。
所以,如果我有这个:
addi $s1, $s1, 0
addi $s1, $s1, 0
lui $s1, 0x1001
top: bne $s1, $s2, end
addi $s1, $s1, 1
end: j top
Run Code Online (Sandbox Code Playgroud)
我想找出跳转指令j top
正确答案是 0x08100003。我只是不知道怎么做。
顶部地址是0x0040000C。
计算此值的一种快速而肮脏的方法是计算出 x * 4 = 目标地址。因此,x * 4 = 4 (1) 且 x * 4 = 12 (3)。所以,我明白为什么指令中有 1 和 3 了。
跳转的操作码是 2hex,所以我们从 0000 10(操作码的 6 位)开始。然后我不知道下一步该做什么。我知道指令的结尾是 3,但我怎么知道把 1 放在哪里呢?
我希望这是有道理的。谢谢您的帮助。
的指令字由J值为 的 6 位操作码组成%000010,后跟包含目标地址的低 28 位右移 2 位的 26 位。
如果我们取0x040000C,则将其右移 2 位并以二进制形式显示结果,仅得到低 26 位%00000100000000000000000011。
让我们在其前面加上操作码位,这给了我们%00001000000100000000000000000011. 如果我们将该数字分成四位组,则更容易看到十六进制表示形式:
0000 1000 0001 0000 0000 0000 0000 0011
0 8 1 0 0 0 0 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |