In MIPS, what are HI and LO
assembly, cpu-registers, mips
Solution
These are special registers used to store the result of multiplication and division. They are separate from the `$0 .. $31` general purpose registers, not directly addressable. Their contents are accessed with special instructions `mfhi` and `mflo` (Move From HI/LO).
They are present in the Multiply Unit and are 32-bits each. More info here. As a pair, they hold the 64-bit full result of a 32x32-bit integer `mult`.
Raymond Chen's blog article The MIPS R4000, part 3: Multiplication, division, and the temperamental HI and LO registers has some very good info about early MIPS's non-intuitive behaviours, including `mtlo` / `mtlo` invalidating the previous `hi` / `lo` (respectively).
The incomplete integer instruction-set reference (linked in the question) for early MIPS also has some details, http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html, or see MIPS's official PDF manuals, or PDFs of manuals for classic MIPS CPUs.
Problem
I'm reading about division in MIPS and I've found that div Divides $s by $t and stores the quotient in $LO and the remainder in $HI https://web.archive.org/web/20201111203150/http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html And Wikipedia says HI and LO are used to access the multiplier/divider results, accessed by the mfhi (move from high) and mflo commands. http://en.wikipedia.org/wiki/MIPS_architecture Are HI and LO registers? What number registers are they?