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