2013-04-10 61 views
2

我试图转移到一个地址:MIPS如何转移到32位地址?

bne $t0, $0, 0x7813a21c 

然而,这不正确,因为BNE只分配16位的即时

我怎么能转移到直接的32位地址?有没有办法从寄存器中的值中分支?

回答

1

您必须使用JR才能跳转到存储在寄存器中的地址。

+0

但这是无条件的。我想能够分支到一个32位地址。 – James 2013-04-11 21:07:01

+0

使用您根据条件选择的值加载寄存器。 – 2013-04-12 05:16:13

0

要预制这种类型的操作,您需要一个跳转语句。您必须告诉代码将控制上下文跳转到您希望指定的确切行。这是示例语法:j offset您的地址中的哪个位置是偏移量。

下面是一个链接,更好地评论你必须做的事情。查看关于跳跃的部分。这些是可用的跳跃类型。其中之一就是你需要:j offsetjal offsetjr $rsjalr $rs

这里是链接: http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/jump.html

好运

+0

'j offset'只能用于在当前的256MByte区域内跳转。你需要使用'jr'指令来跳转到任意的32位地址。 – markgz 2013-04-11 21:17:14