О загрузке байтовой инструкции в MIPS
Я хочу знать об обработке байта загрузки MIPS ( lb
) инструкция. Я нашел вопрос, который просит меня заполнить переменную, учитывая byte@7=0x82, byte@8=0x6A
,
lb $s4,8($0)
(ответ$s4=6A
)lhu $s5,7($0)
(ответ$s5=6A82
)lb $s4,7($0)
(ответ$s4=FFFFFFF82
)
Я думаю, что я понимаю в 1-м и 2-м вопросе. Но я не очень понимаю в третьем вопросе, почему ответ FFFFFFF82
, Я буду очень рад, если вы все расскажете мне об этом. Спасибо.
1 ответ
Когда вы загружаете один байт в 32-битный регистр с lb
Инструкция Архитектура MIPS выполняет автоматическое расширение знака. Для первого примера значение загружено (0x64
) является положительным, поэтому регистр содержит 0x0000006a
, Но для последнего примера значение отрицательное (0x82
== -126) поэтому регистр будет расширен до 0xffffff82
(-126 выражается как 32-битное значение со знаком).
Обратите внимание, что lbu
инструкция является неподписанной версией lb
- он не выполняет расширение знака, поэтому старшие байты результирующей загрузки всегда будут равны нулю.