В 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 - остаток.