Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция XORI
XORI rd, rs1, imm
Набор команд: базовый RV32I
Формат: I
Операнды: rd и rs1 – регистры, imm – 12-битная константа (со знаком!)
Действие: rd := rs1 XOR imm (логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ)
Примечания
- Имеется разновидность операции - XOR, у которой вместо константы imm используется содержимое регистра.
- С помощью XOR можно полностью заменить логическую операцию NOT (см. пример 2).
Пример 1
Инструкция XORI x31, x7, 6 выполняет логическую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ между соответствующими битами значения из x7 и константы 6, а результат помещает в x31 . Для данной константы биты 1-й и 2-й будут проинвертированы (их значения изменятся на противоположные), а все остальные сохранятся. (Биты нумеруются справа налево, начиная с 0.)
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
imm | 12 битов | 000000000110 | 6 |
rs1 | 5 битов | 00111 | x7 |
func3 | 3 бита | 100 |
всегда |
rd | 5 битов | 11111 | x31 |
opcode | 7 битов | 0010011 |
всегда |
Итоговый код
0000000 00110 00111 100 11111 00100112 = 00 63 CF 9316
Пример 2
Инструкция XORI x7, x6, -1 инвертирует содержимое x6 (подчеркнем, что за счет расширения знака константа -1 будет преобразована в маску из 32 единиц!) и записывает результат в x7 .
На базе такой инструкции определяется псевдооперация not rd, rs .
Таблица истинности для логической операции XOR
imm | rs1 | rd |
примечание |
0 | 0 | 0 | бит сохраняется |
0 | 1 | 1 | бит сохраняется |
1 | 0 | 1 | бит инвертируется |
1 | 1 | 0 | бит инвертируется |
Константа imm здесь играет роль произвольно задаваемой маски, которая определяет, на какие биты надо воздействовать, а rs1 - это данные.
|