blt
lyszt.net охоплює blt та інші інструкції RISC-V більш детально.
Формат кодування
Опис
blt порівнює два значення й виконує перехід, коли перше менше. beq і bne натомість перевіряють рівність. Назва означає branch if less than (перехід, якщо менше). Наведена нижче форма виконує перехід до позначеної позиції, коли rs1 менше за rs2, а в іншому разі переходить до наступної інструкції.
blt rs1, rs2, label
Сторінка beq пояснює переходи, мітки та те, як працює перехід.
Порівняння розглядає обидва значення як знакові, тому вони можуть бути від'ємними. -1 менше за 0, і будь-яке від'ємне число менше за будь-яке додатне. Беззнакові порівняння використовують окрему інструкцію, bltu, і ці дві розходяться для будь-якого значення, у якого встановлено старший біт.
Цикли з лічильником покладаються на blt. Наведений нижче рядок повторюється, поки лічильник t0 залишається меншим за свою межу t1.
blt t0, t1, loop
Щойно лічильник досягає межі, перехід не виконується й цикл завершується. Перевірки меж використовують ту саму інструкцію, щоб утримувати значення нижче максимуму, перш ніж програма його використає.
Посібник RISC-V зазначає, що blt і bltu виконують перехід, коли rs1 менше за rs2, порівнюючи відповідно знакові та беззнакові значення. Він також зауважує, що bgt, bgtu, ble і bleu можна синтезувати, помінявши місцями операнди blt, bltu, bge і bgeu.
RISC-V не надає переходу, якщо більше. Щоб перевірити, чи a більше за b, поміняйте порівняння й перевірте, чи b менше за a. Асемблер пропонує скорочення bgt, яке саме міняє операнди місцями.
Приклад
li t0, 2 li t1, 5 blt t0, t1, done # 2 < 5, so jump to 'done'
