29

我正在阅读 MIPS 中的除法,我发现 div

将 $s 除以 $t 并将商存储在 $LO 中,余数存储在 $HI 中

https://web.archive.org/web/20201111203150/http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

维基百科说

HI 和 LO 用于访问乘法器/除法器结果,由 mfhi(从高位移动)和 mflo 命令访问。

http://en.wikipedia.org/wiki/MIPS_architecture

是 HI 和 LO 寄存器吗?它们是什么数字寄存器?

4

3 回答 3

31

这些是用于存储乘法和除法结果的特殊寄存器。$0 .. $31它们与通用寄存器分开,不能直接寻址。mfhi使用特殊指令和mflo(从 HI/LO 移动)访问它们的内容。

它们存在于乘法单元中,每个都是 32 位的。更多信息在这里。作为一对,它们保存 32x32 位整数的 64 位完整结果mult


Raymond Chen 的博客文章MIPS R4000,第 3 部分:乘法、除法和气质 HI 和 LO 寄存器有一些关于早期 MIPS 非直觉行为的非常好的信息,包括mtlo/mtlo使先前的行为无效hi/ lo(分别)。

早期 MIPS 的不完整整数指令集参考(链接在问题中)也有一些细节,http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html,或查看 MIPS 的官方 PDF手册,或 PDF 的经典 MIPS CPU 手册。

于 2010-02-23T17:24:04.193 回答
11

HI 和 LO 不是编号寄存器 IIRC。它们仅用于存储不适合单个寄存器的操作结果(例如,将两个 32 位整数相乘可能会产生一个 64 位整数,因此溢出进入 HI)。

编辑:根据此类描述,它们确实是特殊寄存器,因此它们没有编号,只能使用特殊命令访问。

于 2010-02-23T17:22:19.687 回答
2

LO 所做的是,对于乘法,它存储最低有效位,而 HI 存储其余位,但主要是,我们只关注乘法的 LO 部分。在部门中,我们专注于两者。除法中的 LO 是应存储商的位置,而 HI 是余数。

于 2016-09-27T03:22:35.653 回答