MIPS范围的跳转指令

时间:2012-01-27 08:00:47

标签: mips

我正在阅读Patterson和Hennessy的书“Computer Organization and Design”,并对MIPS感兴趣。

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

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

或者,您是否可以指导我阅读一些在线资源或书籍,以帮助我更好地了解这些内容?

1 个答案:

答案 0 :(得分:11)

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

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

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

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