Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция SUB
SUB rd, rs1, rs2
Набор команд: базовый RV32I
Формат: R
Операнды: все три операнда – содержимое регистров
Действие: rd := rs1-rs2
Примечания
- Переполнение игнорируется, результатом операции являются младшие биты.
- Операция вычитания константы отсутствует (бит в поле func7, по которому можно было бы различить ADDI и SUBI, попадает в константу). Предполагается замена инструкцией сложения ADDI с отрицательным значением (см. пример 2 в описании ADDI).
Пример 1
Инструкция SUB x31, x7, x6 из содержимого регистра x7 вычитает значение x6 , а результат помещает в x31 .
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
func7 | 7 битов | 0100000 |
всегда |
rs2 | 5 битов | 00110 | x6 |
rs1 | 5 битов | 00111 | x7 |
func3 | 3 бита | 000 |
всегда |
rd | 5 битов | 11111 | x31 |
opcode | 7 битов | 0110011 |
всегда |
Итоговый код
0100000 00110 00111 000 11111 01100112 = 40 63 8F B316
Пример 2
Псевдооперация для изменения знака числа на противоположный neg x7, x6 преобразуется в SUB x7, x0, x6 (добавим, что x0 всегда равен нулю).
|