Навигатор
Инструкции базового набора
RV32I:
арифметические
логические
сдвиги
сравнения
безусловные
переходы
системные
|
условные
переходы
загрузки
сохранения
См. также
|
|
Инструкция BLT
BLT rs1, rs2, offset
Набор команд: базовый RV32I
Формат: B (иногда пишут SB, подчеркивая общность с форматом S)
Операнды: rs1 и rs2 – регистры, offset – 12-битная константа (со знаком!)
Действие: сравнить как числа со знаком значения в регистрах; при rs1 < rs2 выполнить переход, т.е. прибавить к адресу инструкции перехода смещение offset.
Примечания
- Общие для всех переходов правила см. здесь.
- Существует инструкция для перехода с противоположным условием – BGE (rs1 >= rs2).
Инструкция BLE (rs1 <= rs2) в системе команд отсутствует – она заменяется псевдооперацией ble rs, rt, offset с переставленными в BGE операндами: BGE rt, rs, offset .
Имеется также операция BLTU, которая сравнивает значения регистров как числа без знака.
- Доступный диапазон переходов составляет ±4 Кб. Если потребуется больше, можно применить прием, описанный в разделе "Диапазон переходов".
Пример 1
Инструкция BLT x6, x7, 8 сравнивает числа в x6 и x7 и в случае x6 < x7 выполняет переход, прибавляя к текущему значению счетчика смещение. Подчеркнем, что при смещении 8 (байтов) в программе будет пропущена только одна(!) 32-битная инструкция: еще 4 байта – это сама инструкция перехода.
Код инструкции содержит следующие поля:
поле | разрядность | содержимое | примечание |
offset1 | 7 битов | 0000000 |
0 |
rs2 | 5 битов | 00111 | x7 |
rs1 | 5 битов | 00110 | x6 |
func3 | 3 бита | 100 |
всегда |
offset2 | 5 битов | 01000 | 8 |
opcode | 7 битов | 1100011 |
всегда |
Примечание. Обратите внимание на тот факт, что в данном случае в старших битах смещения стоят нули и потому перестановка битов в смещении оказалась "незаметной". Но это не значит, что ее не было.
Итоговый код
0000000 00111 00110 100 01000 11000112 = 00 73 44 6316
Пример 2
Инструкция BLT x6,x7, –4 (ее код FE 73 4E E3) аналогичным образом при выполнении условия обеспечит переход на инструкцию, предшествующую условному переходу.
Пример 3
Имеются псевдооперации bltz rs, offset и bgtz rs, offset , которые заменяются инструкциями BLT rs, x0, offset и BLT x0, rs, offset .
|