Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция SLTIU
SLTIU rd, rs1, imm
Набор команд: базовый RV32I
Формат: I
Операнды: rd и rs1 – регистры, imm – 12-битная константа (с расширением знака, хотя сравнение потом будет беззнаковым!)
Действие: сравнить как числа без знака rs1 и imm; если rs1 < imm, то rd := 1, иначе rd := 0.
Примечания
- Имеется разновидность операции SLTU, у которой вместо константы используется содержимое регистра.
- Имеются операции SLT и SLTI, которые сравнивают значения как числа со знаком.
- В отличие от чисел со знаком, где -1 < 1, при интерпретации без знака слово FF FF FF FF оказывается больше, чем представление единицы 00 00 00 01.
Пример 1
Инструкция SLTIU x31, x7, 6
сравнивает беззнаковым образом значение в регистре x7 с константой 6. В случае x7 < 6 в x31 заносится 1, иначе 0.
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
imm | 12 битов | 000000000110 | 6 |
rs1 | 5 битов | 00111 | x7 |
func3 | 3 бита | 011 |
всегда |
rd | 5 битов | 11111 | x31 |
opcode | 7 битов | 0010011 |
всегда |
Итоговый код
0000000 00110 00111 011 11111 00100112 = 00 63 BF 9316
Пример 2
Инструкция SLTIU rd, rs, 1 устанавливает результат в 1 при rs < 1, т.е. только при нулевом значении аргумента rs (не забывайте, что все числа без знака положительны). В ассемблере на ее базе вводится псевдооперация seqz rd, rs (Set if EQual Zero).
|