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