В MIPS, что такое HI и LO

Я читаю о разделении в MIPS, и я обнаружил, что div

Разделяет $s на $t и сохраняет фактор в $LO, а остаток в $HI

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

И Wikipedia говорит

HI и LO используются для доступа к результатам мультипликатора/делителя, доступ к которым осуществляется с помощью команд mfhi (move from high) и mflo.

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

Регистрируются ли регистры HI и LO? Какими регистрами они являются?

Ответы

Ответ 1

Это специальные регистры, используемые для хранения результата умножения и деления. Они не имеют прямого обращения. К их содержимому обращаются по специальным инструкциям mfhi и mflo

Они присутствуют в модуле умножения и являются 32-битными каждый. Больше информации здесь.

Ответ 2

HI и LO не являются пронумерованными регистрами, IIRC. Они используются только для хранения результатов операций, которые не помещаются в одном регистре (например, умножение двух 32-разрядных целых может привести к 64-разрядному целому числу, поэтому переполнение идет в HI).

edit: согласно этому описанию класса, это действительно специальные регистры, поэтому они не нумеруются и доступны только с помощью специальных команд.

Ответ 3

То, что делает LO, это то, что для умножения он хранит младшие значащие биты, а HI хранит остальные биты, но в основном мы просто фокусируемся на LO-части для умножения. В разделении мы фокусируемся на обоих. LO в делении - это то, где фактор должен быть сохранен, а HI - остаток.