О загрузке байтовой инструкции в 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 - он не выполняет расширение знака, поэтому старшие байты результирующей загрузки всегда будут равны нулю.

Другие вопросы по тегам