2016-05-02 70 views
1

我学习MIPS,现在,当我阅读文档,它说:MIPS分支指令

18位有符号偏移量(16位偏移字段左移2位)

我想知道为什么分支指令的偏移量乘以4?该文档还指出,这使得分支指令的范围为128 kb,因为32kb乘以4.此乘法是否仅适用于分支指令,还是也适用于跳转指令?

谢谢!

回答

2

我想知道为什么分支指令的偏移量乘以4?

所有指令必须是字对齐的。从中可以看出,原点和目的地都是字对齐的,这又意味着偏移量也始终是字对齐的。因此,存储偏移量的两个最低有效位是很浪费的,因为它们始终为0.我们可以使用指令字中的可用位通过只存储16位最高有效位来编码18位偏移量。

这种乘法只适用于分支指令吗?它也适用于跳转指令吗?

跳转指令是一样的。尽管跳转指令在其他方面有所不同,跳转的偏移不是PC相对的,而是相对于PC当前所处的256MB对齐区域的开始。