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