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