Я бы хотел расширить ответ Нильса Пипенбринка:
Из архива MIPS32 для программистов
mthi
Формат: MIPS32 (MIPS I)
MTHI rs
Назначение:
Для копирования георадара в регистр HI специального назначения
Description: HI ← rs
Содержимое GPR rs загружается в специальный регистр HI.
Ограничения:
Вычисленный результат, записанный в пару HI / LO с помощью DIV, DIVU, MULT или MULTU, должен быть прочитан MFHI или MFLO
прежде чем новый результат может быть записан в HI или LO.
Если инструкция MTHI выполняется согласно одной из этих арифметических инструкций, но перед MFLO или MFHI
инструкция, содержание ЛО НЕПРЕДВИДЕННО. Следующий пример показывает эту недопустимую ситуацию:
MUL r2,r4 # start operation that will eventually write to HI,LO
... # code not containing mfhi or mflo
MTHI r6
... # code not containing mflo
# this mflo would get an UNPREDICTABLE value
MFLO r3
Историческая справка:
В MIPS I-III, если любой из двух предыдущих инструкций является MFHI, результат этого MFHI НЕПРЕДВИДИМ.
Чтения из специального регистра HI или LO должны быть отделены от любых последующих инструкций, которые пишут им, двумя
или больше инструкций. В MIPS IV и более поздних версиях, включая MIPS32 и MIPS64, это ограничение не существует.
mtlo
Формат: MIPS32 (MIPS I)
MTLO rs
Назначение:
Чтобы скопировать GPR в регистр LO специального назначения
Описание:
LO ← rs
Содержимое GPR rs загружается в специальный регистр LO.
Ограничения:
Вычисленный результат, записанный в пару HI / LO с помощью DIV, DIVU, MULT или MULTU, должен быть прочитан MFHI или MFLO, прежде чем новый результат может быть записан в HI или LO.
Если инструкция MTLO выполняется после одной из этих арифметических инструкций, но перед инструкцией MFLO или MFHI, содержимое HI НЕИЗБЕЖНО.
В следующем примере показана эта недопустимая ситуация:
MUL r2,r4 # start operation that will eventually write to HI,LO
... # code not containing mfhi or mflo
MTLO r6
... # code not containing mfhi
# this mfhi would get an UNPREDICTABLE value
MFHI r3
Историческая справка:
В MIPS I-III, если любой из двух предыдущих инструкций является MFHI, результат этого MFHI НЕПРЕДВИДИМ.
Чтения из специального регистра HI или LO должны быть отделены от любых последующих инструкций, которые пишут им, двумя
или больше инструкций. В MIPS IV и более поздних версиях, включая MIPS32 и MIPS64, это ограничение не существует.