bgtz
псевдоlyszt.net охоплює bgtz та інші інструкції RISC-V більш детально.
Опис
bgtz виконує перехід, коли значення в регістрі є додатним. Назва означає branch if greater than zero (перехід, якщо більше нуля). Наведена нижче форма переходить до позначеної позиції, коли rs більше нуля, і в іншому разі переходить до наступної інструкції.
bgtz rs, label
Асемблер розглядає її як псевдоінструкцію та переписує її в інструкцію нижче, яка перевіряє, чи zero менше за регістр.
blt zero, rs, label
У RISC-V немає переходу для «більше», тому операнди міняються місцями, і роботу виконує перехід «менше», так само як побудовано bgt. Порівняння знакове. Нуль не виконує перехід, що відрізняє bgtz від bgez. Див. blt для базового переходу.
bgtz підходить для циклу, який має продовжуватися, поки щось залишається для обробки, наприклад лічильник елементів, що залишилися, який більший за нуль. Він також перевіряє, чи результат більший за нуль.
bgtz a0, found
Рядок вище переходить до found, коли a0 містить 1 або більше. Значення 0 або будь-яке від’ємне число продовжує виконання з наступної інструкції.
Розгортається до
blt zero, rs, label
Асемблер замінює цю псевдоінструкцію реальною інструкцією або інструкціями, переліченими вище.
Приклад
li t0, 4 bgtz t0, done # t0 > 0, so jump to 'done'
