为什么我们需要将J类型指令扩展为仅2位?
请查看 MIPS
中的这个单周期数据路径
。 J型指令
的26位
正在位扩展为28
。我不明白这一点。难道不应该扩展到 31 位,这样整体上就变成了 32 位吗?请帮我理清这个概念。 谢谢
Please have a look at this Single Cycle Data Path
in MIPS
. The 26 bits
of J type instruction
are being Bit Extended to 28
. I don't get the point. Shouldn't it be extended to 31 so it makes 32
bits overall. Please help me out to clear the concept.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这确实是无符号扩展。回想一下,MIPS 中的指令是 4 字节对齐的。
这意味着您可以在 0 模 4 的地址(即 0, 4, 8, 12, ...)处启动指令。
现在,左移 2 两位就像乘以 4,得到的数字为始终为 0 模 4。
实际地址将由以下形式构成:
- nPC 的 4 个最高有效位(即 PC+4)(我们称之为 PPPP)
- 指令中指定的 26 位地址字段(我们称其为 AAA...AA)
- 00 作为两个最低有效位(产生所需的指令对齐),
因此地址将为(二进制)PPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAA00
This is really no sign extension. Recall that the instructions in MIPS are 4-byte aligned.
This means that you can start an instruction at addresses which are 0 modulus 4 (i.e. 0, 4, 8, 12, ...)
Now, doing a shift left of 2 two bits is like multiplying by 4, which yields numbers which are always 0 modulus 4.
The actual address will be formed with:
- the 4 most significant bits of the nPC (that is PC+4) (lets call them PPPP)
- the 26 bits of the address field specified in the instruction, (lets call them AAA....AA)
- 00 as the two least significant bits (which yields the required instruction alignment)
Thus the address will be (binary) PPPPAAAAAAAAAAAAAAAAAAAAAAAAAA00