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
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?
These are special registers used to store the result of multiplication and division. They are separate from the
$0 .. $31general purpose registers, not directly addressable. Their contents are accessed with special instructionsmfhiandmflo(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 32×32-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/mtloinvalidating the previoushi/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.