我正在学习MIPS,当我阅读文档时,它说:
18位有符号偏移(16位偏移字段向左移位2位)
我想知道为什么分支指令的偏移量乘以4?文档还指出,这使分支指令的范围为128 kb,因为32kb乘以4.此乘法是仅适用于分支指令还是也适用于跳转指令?
谢谢!
答案 0 :(得分:2)
我想知道为什么分支指令的偏移量乘以4?
所有说明必须是字对齐的。由此得出,原点和目的地都是字对齐的,这反过来意味着偏移也总是字对齐的。因此,存储偏移的两个最低有效位将是一种浪费,因为它们总是为0.相反,我们可以通过仅存储16个最高有效位来使用指令字中的可用位来编码18位偏移。 / p>
此乘法是仅适用于分支指令还是也适用于跳转指令?
跳转指令也是如此。虽然跳转指令在其他方面有所不同;跳转的偏移量不是PC相对的,而是相对于PC当前所在的256MB对齐区域的起点。