我们仅将JUMP指令中的目标地址表示为26位,因此该地址取决于当前的PC + 4值。 考虑我想要跳转到的指令位于
的代码中的情况0010& [my_target = 26 bits]& 00
但我们会跳转到以0011开头的错误地址(到0011& [my_target = 26 bits] $ 00),因为PC已经增加到更改其第4位的值。
这种情况真的可能吗?
如果是,怎么解决?
Thanx
答案 0 :(得分:1)
这种情况真的可能吗?
是的,确实如此。引用 MIPS32™架构的程序员 第二卷:MIPS32™指令集:
当跳转指令在256 MB的最后一个字中时 区域,它只能分支到包含分支延迟槽的以下256 MB区域。
如果是,怎么解决?
将要跳转的地址加载到寄存器中,然后使用jr
指令。