MIPS范围的跳转指令

Syn*_*ter 7 mips

我正在阅读Patterson和Hennessy 撰写的" 计算机组织与设计 " 一书,并对MIPS感兴趣.

我对找到跳转/分支指令的范围有疑问.还要确定到达特定地址所需的分支/跳转指令的数量.

有人可以解释如何计算这一点,即在特定地址考虑PC并找到转到不同地址所需的分支/跳转指令的数量?例如,如果PC位于0x10001010,分支和跳转指令的地址范围是多少?

或者你可以指导我一些在线资源或书籍,这将有助于我更好地了解这些?

mar*_*kgz 11

以下是MIPS-32的全部内容.

分支B, BEQ, BNE, etc.指令具有16位带符号偏移字段,允许从当前位置分支到地址+/- 128kBytes.跳转J指令指定由PC的最高有效4位指定的当前256MByte区域内的地址:26 << 2位(这不是相对地址).要分支到4GB地址空间中任意位置的任意地址,请使用JR(跳转寄存器)跳转到通用寄存器中包含的地址.

它需要一个分支或跳转指令,或一个寄存器加载,后跟一个JR跳转到任意地址,具体取决于地址的距离.

MIPS编程的最佳书籍仍然是MIPS Run.您还可以在mips.com上找到MIPS架构参考手册(需要注册).最相关的文档是针对程序员的MIPS32®架构第二卷:MIPS32®指令集.