Пояснения к подписанным / неподписанным инструкциям по загрузке и хранению (MIPS) - PullRequest
11 голосов
/ 29 августа 2011

Я не могу понять концепцию этих вещей, даже с помощью Google и учебника в моей руке.

Следуя формату (код операции, RS, RT, смещение) ...

  • Подпишите ли вы смещение перед добавлением его к значению адреса?Или добавить перед расширением?
  • В случае lb и lbu , в чем разница?Соответствует ли оно также арифметическому определению MIPS, которое означает, что «unsigned» означает, что оно не сообщит о переполнении?Даже в магазине нет инструкции ...

1 Ответ

30 голосов
/ 29 августа 2011

В случае lb и lbu, в чем разница?

Инструкции «загрузки байтов» lb и lbu загружают один байт в самый правый байт 32-битного регистра. Как вы устанавливаете верхние 24 бита? Операция unsigned установит их в ноль; подписанная операция будет подписывать-расширять загруженный байт.

Например, предположим, что вы прочитали байт 0xFF из памяти. lbu будет 0 расширять это значение до 0x000000FF и интерпретировать его как 255, в то время как lb будет расширять его до 0xFFFFFFFF, что интерпретируется как -1.

Почему lw не имеет неподписанной версии? Даже в магазине нет инструкции ...

С другой стороны, инструкция «загрузить слово» (lw) загружает 32-разрядную величину в 32-разрядный регистр, поэтому нет никакой двусмысленности и нет необходимости иметь специальную подписанную версию.

Если вы храните меньше 32-битного слова, вы ничего не можете сделать с дополнительными битами в регистре, кроме как выбросить их (игнорировать).

Следует ли также арифметическому определению MIPS, что «unsigned» означает, что оно не сообщит о переполнении?

Я думаю, что это соглашение только для инструкций сложения и вычитания. Для других инструкций подписанный / неподписанный указывает, будет ли выполняться расширение знака.

Подписываете ли вы расширение смещения перед добавлением его к значению адреса? Или добавить перед расширением?

Если смещение расширено знаком, имеет смысл сделать это только перед добавлением его к базовому адресу. Я думаю, что обзор дополнения к двум арифметике прояснит это.

...