bleпсевдо

ble

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

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

Опис

Гілки ble виникають, коли одне значення менше або дорівнює іншому. Назва означає branch if less than or equal (перехід, якщо менше або дорівнює). Наведена нижче форма виконує перехід до мітки, коли rs1 не більше ніж rs2, використовуючи порівняння зі знаком.

ble rs1, rs2, label

ble — це псевдоінструкція, яка спирається на перестановку операндів, як і bgt. Питання «a менше або дорівнює b» збігається з питанням «b більше або дорівнює a», тому асемблер переписує ble як bge з оберненим порядком операндів. Окрема машинна інструкція не потрібна. Див. bge для базового переходу.

ble підходить для циклів і діапазонів, що включають свою кінцеву точку. Цикл, який виконується, поки лічильник не більше ніж n, причому n включно, читається ясно з ble. Той самий цикл зі строгим blt потребує n плюс один. Перевірки діапазону використовують її разом з іншими гілками. Переходьте вбік, якщо значення нижче мінімуму, переходьте вбік, якщо воно вище максимуму, а те, що залишилося, пройшло перевірку.

Посібник RISC-V стверджує, що bgt, bgtu, ble і bleu можна синтезувати, обернувши операнди на blt, bltu, bge і bgeu.

Рівні значення все ж викликають перехід з ble, що робить її протилежністю bgt за тих самих операндів. Для будь-якої пари одна з них виконує перехід. Порівняння знакове, тому значення можуть бути від'ємними. blt, bge, bgt і ble разом дають усі чотири напрямки знакового впорядкування.

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

bge rs2, rs1, label

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

Приклад

li t0, 2
li t1, 5
ble t0, t1, done   # 2 <= 5, so jump to 'done'