Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция SH
SH rs2, base, offset
Набор команд: базовый RV32I
Формат: S
Операнды: rs2 и base – регистры, offset – 12-битная константа (со знаком!)
Действие: сохранить в память 2 младших байта (half word – полуслово) из регистра rs2; адрес равен сумме базового регистра (в традиционной для rs1 позиции) и смещения (offset)
Примечания
- Смещение в коде инструкции разбито на две части: старшая лежит в поле, соответствующем funct7, - это offset1, а младшая – вместо rd (offset2).
- Существуют инструкции для записи другого количества байт: SB и SW. Конкретный вариант считывания задается в поле funct3.
Пример
Инструкция SH x31, x3, 8 в ассемблере часто записывается SH x31, 8(x3) , где более наглядно показан адрес ОЗУ – смещение 8 байт относительно значения в x3 . Команда сохраняет 2 байта из x31 в память по указанному адресу.
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
offset1 | 7 битов | 0000000 |
0 |
rs2 | 5 битов | 11111 | x31 |
base | 5 битов | 00011 | x3 |
funct3 | 3 бита | 001 |
всегда |
offset2 | 5 битов | 01000 | 8 |
opcode | 7 битов | 0100011 |
всегда |
Итоговый код
0000000 11111 00011 001 01000 01000112 = 01 F1 94 2316
Примечание. Регистр x3 обычно используется системой для хранения начального адреса области глобальных данных.
|