Навигатор
My RISC-V home
Инструкции
базового набора
RV64I
(дополняет
RV32I):
арифметические
сдвиги
загрузки
сохранения
См. также
|
Инструкция SRAW
SRAW rd, rs1, rs2
Набор команд: базовый RV64I
Формат: R
Операнды: все три операнда – содержимое регистров
Действие: арифметический сдвиг вправо значения rs1 на число разрядов из rs2; в дополнение к обычному сдвигу SRA, при SRAW в старшие биты 32-63 результата расширяется знак из бита 31, и полученное число заносится в rd
Примечания
- Выходящие вправо младшие биты теряются, а в бит 31 поступает расширение знака из битов 32-63.
- Инструкция позволяет получить 32-битное число, пригодное для 64-битной обработки.
- В документации указано, что при сдвигах, мнемоника которых заканчивается на W, в качестве сдвигаемого значения из rs1 берутся младшие 32 бита. Старшие биты при SRAW удобно заполнить, расширив знак из 31 бита.
- Все биты в rs2 кроме младших 5 игнорируются.
- Имеется разновидность операции - SRAIW, у которой вместо rs2 используется константа.
Пример
Инструкция SRAW x31, x7, x6 арифметически (сохраняя знак числа) сдвигает 32 младших бита регистра x7 вправо на число разрядов из x6 , а затем младшие 32 бита результата с расширением знака помещает в x31 .
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
func7 | 7 битов | 0100000 |
всегда |
rs2 | 5 битов | 00110 | x6 |
rs1 | 5 битов | 00111 | x7 |
func3 | 3 бита | 101 |
всегда |
rd | 5 битов | 11111 | x31 |
opcode | 7 битов | 0111011 |
всегда |
Итоговый код
0100000 00110 00111 101 11111 01110112 = 40 63 DF BB16
|