Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция SRA (32 бита)
SRA rd, rs1, rs2
Набор команд: базовый RV32I
Формат: R
Операнды: все три операнда – содержимое регистров
Действие: арифметический сдвиг вправо значения rs1 на число разрядов из rs2; результат помещается в rd
Примечания
- Выходящие вправо младшие биты теряются, а старшие слева заполняются значением знакового бита (расширение знака).
- Т.к. для 32-разрядного операнда число сдвигов не должно превышать 25, все биты в rs2 кроме младших 5 игнорируются. Для 64-разрядной инструкции SRA используется 6 битов, для 128-разрядной – 7.
- Имеется разновидность операции - SRAI, у которой вместо rs2 используется константа.
- Операцией SRA можно заменить деление со знаком на 2N.
Пример
Инструкция SRA x31, x7, x6 арифметически (сохраняя знак числа) сдвигает содержимое регистра x7 вправо на число разрядов из x6 , а результат помещает в x31 .
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
func7 | 7 битов | 0100000 |
всегда |
rs2 | 5 битов | 00110 | x6 |
rs1 | 5 битов | 00111 | x7 |
func3 | 3 бита | 101 |
всегда |
rd | 5 битов | 11111 | x31 |
opcode | 7 битов | 0110011 |
всегда |
Итоговый код
0100000 00110 00111 101 11111 01100112 = 40 63 DF B316
|