Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция SLT
SLT rd, rs1, rs2
Набор команд: базовый RV32I
Формат: R
Операнды: все три операнда – содержимое регистров
Действие: сравнить как числа со знаком rs1 и rs2; если rs1 < rs2, то rd := 1, иначе rd := 0.
Примечания
- Имеется разновидность операции SLTI, у которой вместо rs2 используется константа.
- Имеются операции SLTU и SLTIU, которые сравнивают значения как числа без знака.
Пример 1
Инструкция SLT x31, x7, x6
сравнивает числа со знаком в регистрах x7 и x6 . В случае x7 < x6 в x31 заносится 1, иначе 0.
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
func7 | 7 битов | 0000000 |
всегда |
rs2 | 5 битов | 00110 | x6 |
rs1 | 5 битов | 00111 | x7 |
func3 | 3 бита | 010 |
всегда |
rd | 5 битов | 11111 | x31 |
opcode | 7 битов | 0110011 |
всегда |
Итоговый код
0000000 00110 00111 010 11111 01100112 = 00 63 AF B316
Пример 2
Инструкция SLT rd, rs, x0 устанавливает результат в 1 при rs < 0, т.е. при отрицательном значении аргумента rs. В ассемблере на ее базе вводится псевдооперация sltz rd, rs (Set if Less Than Zero). Аналогично вместо SLT rd, x0, rs можно писать sgtz rd, rs (Set if Greater Than Zero). В этом случае rd = 1 только когда rs > 0.
|