Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция ADDI
ADDI rd, rs1, imm
Набор команд: базовый RV32I
Формат: I
Операнды: rd и rs1 – регистры, imm – 12-битная константа (со знаком!)
Действие: rd := rs1+imm
Примечания
- При преобразовании константы к 32-битному формату происходит расширение знака, т.е. знаковый (11-й) бит константы копируется в биты 12-31. (Биты нумеруются справа налево начиная с 0.)
- Переполнение игнорируется, результатом операции являются младшие биты.
- Имеется разновидность операции сложения ADD, у которой вместо константы imm используется содержимое регистра.
- Команда ADDI часто используется в псевдооперациях (см. примеры 4-5).
Пример 1
Инструкция ADDI x31, x7, 6 прибавляет к содержимому регистра x7 число 6, а результат помещает в x31 .
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
imm | 12 битов | 000000000110 | 6 |
rs1 | 5 битов | 00111 | x7 |
func3 | 3 бита | 000 |
всегда |
rd | 5 битов | 11111 | x31 |
opcode | 7 битов | 0010011 |
всегда |
Итоговый код
000000000110 00111 000 11111 00100112 = 00 63 8F 9316
Пример 2
Инструкция ADDI x6, x6, -1 уменьшает значение x6 на 1.
Пример 3
Инструкция ADDI x7, x0, -2 заносит в x7 значение -2; примите во внимание, что x0 всегда равно 0.
Еще раз подчеркнем, что исходная константа -2 = FFE будет преобразована к 32-битному представлению с расширением знака, т.е. в регистре x7 получится код FFFFF FFE.
Пример 4
Псевдооперация mv x7, x3 преобразуется в инструкцию ADDI x7, x3, 0 .
Пример 5
Инструкцию ADDI x0, x0, 0 стандарт RISC-V рекомендует как «пустую» псевдооперацию nop .
|