ADDI rd, rs1, imm
Набор команд: базовый RV32I
Формат: I
Операнды: rd и rs1 – регистры, imm – 12-битная константа (со знаком!)
Действие: rd := rs1+imm
Инструкция 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
Инструкция ADDI x6, x6, -1
уменьшает значение x6
на 1.
Инструкция ADDI x7, x0, -2
заносит в x7
значение -2; примите во внимание, что x0
всегда равно 0.
Еще раз подчеркнем, что исходная константа -2 = FFE будет преобразована к 32-битному представлению с расширением знака, т.е. в регистре x7
получится код FFFFF FFE.
Псевдооперация mv x7, x3
преобразуется в инструкцию ADDI x7, x3, 0
.
Инструкцию ADDI x0, x0, 0
стандарт RISC-V рекомендует как «пустую» псевдооперацию nop
.