Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция LW
LW rd, base, offset
Набор команд: базовый RV32I
Формат: I
Операнды: rd и base – регистры, offset – 12-битная константа (со знаком!)
Действие: прочитать слово (word) из 4 байт в rd; адрес равен сумме базового регистра (в традиционной для rs1 позиции) и смещения (offset)
Примечания
- Существуют инструкции для считывания другого количества байт: LB и LH. Кроме того, можно читать данные без расширения знака (LBU и LHU). Конкретный вариант считывания задается в поле funct3.
- Если инструкция LW выполняется в RV64I, то в прочитанном 32-битном значении дополнительно производится расширение знака (до 64 битов). В состав RV64I также входит добавочная инструкция LWU, которая не делает расширения знака.
Пример
Инструкция LW x31, x3, 8 в ассемблере часто записывается LW x31, 8(x3) , где более наглядно показан адрес ОЗУ – смещение 8 байт относительно значения в x3 . Команда считывает в x31 4-байтовое слово из памяти по указанному адресу.
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
offset | 12 битов | 000000001000 |
8 |
base | 5 битов | 00011 | x3 |
funct3 | 3 бита | 010 |
всегда |
rd | 5 битов | 11111 | x31 |
opcode | 7 битов | 0000011 |
всегда |
Итоговый код
0000000 01000 00011 010 11111 00000112 = 00 81 AF 8316
Примечание. Регистр x3 обычно используется системой для хранения начального адреса области глобальных данных.
|