假设我们在地址0x20000004处有一个跳转指令。现在,据我所知,跳转间隔与PC值无关,但绝对间隔约为32位寄存器最大值的1/16。现在,考虑如何在机器代码中构造跳转指令,是否意味着在这种特殊情况下最大向后跳转是1条指令,还是地址为0x20000000?或者在相反的情况下:在地址0x1FFFFFFC处跳转指令,我想跳过2条指令到地址0x20000004。这不可行吗?汇编程序如何设法不在这两种情况之一中放置指令? 编辑:修正了一些错误
答案 0 :(得分:1)
J
指令字的26个最低有效位,向左移2位。因此,您可以跳转到与分支延迟槽中的指令相同的256 MB区域内的任何位置(具有字粒度)。在实践中,除了J
指令位于256 MB区域的最后一个字中的情况之外,这与能够在与J
指令相同的256 MB区域内的任何位置跳转是相同的。