blezпсевдо

blez

псевдо
Асемблер RISC-V Посилання

lyszt.net охоплює blez та інші інструкції RISC-V більш детально.

Опис

blez виконує перехід, коли значення в регістрі дорівнює нулю або від'ємне. Назва означає branch if less than or equal to zero (перехід, якщо менше або дорівнює нулю). Наведена нижче форма виконує перехід до позначеної позиції, коли rs не більше нуля, а в іншому разі переходить до наступної інструкції.

blez rs, label

Асемблер розглядає її як псевдоінструкцію та переписує в наведену нижче інструкцію, яка перевіряє, чи zero більше або дорівнює регістру.

bge zero, rs, label

Операнди міняються місцями, тому що в RISC-V немає переходу за «менше або дорівнює», тож роботу виконує bge, так само як побудовано ble. Порівняння знакове. Перехід за нуля, що відрізняє blez від bltz, і це протилежність bgtz, тому для будь-якого значення рівно одна з двох виконує перехід. Див. bge щодо базового переходу.

blez підходить для перевірки того, що не залишилося нічого робити. Цикл, який обробляє кількість наявних елементів, може завершитися, щойно лічильник стане нулем або опуститься нижче нього.

blez t0, done

Наведений вище рядок виконує перехід до done, коли t0 дорівнює 0 або від'ємне.

Розгортається до

bge zero, rs, label

Асемблер замінює цю псевдоінструкцію реальною інструкцією або інструкціями, переліченими вище.

Приклад

li t0, 0
blez t0, done   # t0 <= 0, so jump to 'done'