Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция SRAI (32 бита)
SRAI rd, rs1, shamt
Набор команд: базовый RV32I
Формат: I
Операнды: rd и rs1 – регистры, shamt – 5-битная константа
Действие: арифметический сдвиг вправо значения rs1 на shamt битов; результат помещается в rd
Примечания
- Выходящие вправо младшие биты теряются, а старшие слева заполняются значением знакового бита (расширение знака).
- Для 32-разрядного операнда число сдвигов shamt помещается в 5 битов. Остающиеся от 12-битной константы 7 битов считаются func7 как в формате R. В 64-разрядной инструкции SRAI под shamt отводится 6 битов, в 128-разрядной – 7.
- Имеется разновидность операции - SRA, у которой вместо константы используются биты из регистра.
- Операцией SRAI можно заменить деление со знаком на 2N.
- Принятое в стандарте RISC-V название поля shamt – это сокращение от SHift AMounT, т.е. количество сдвигов.
Пример
Инструкция SRAI x31, x7, 3 сдвигает содержимое регистра x7 на 3 бита вправо, расширяя знак (эквивалентно делению на 8), а результат помещает в x31 .
Код инструкции для 32-битных данных содержит следующие поля:
поле | разрядность | содержимое | примечание |
func7 | 7 битов | 0100000 |
всегда |
shamt | 5 битов | 00011 | 3 |
rs1 | 5 битов | 00111 | x7 |
func3 | 3 бита | 101 |
всегда |
rd | 5 битов | 11111 | x31 |
opcode | 7 битов | 0010011 |
всегда |
Итоговый код
0100000 00110 00111 101 11111 00100112 = 40 33 DF 9316
Для увеличения разрядности shamt биты берутся из поля func7.
|