bltz
псевдоlyszt.net охоплює bltz та інші інструкції RISC-V більш детально.
Опис
bltz виконує розгалуження, коли регістр містить від'ємне число. Назва означає branch if less than zero (розгалуження, якщо менше нуля). Наведена нижче форма виконує перехід до позначеної позиції, якщо rs менше нуля, і в іншому разі продовжує з наступної інструкції.
bltz rs, label
Асемблер переписує цю псевдоінструкцію в реальну інструкцію. Вона стає наведеною нижче інструкцією, яка порівнює регістр із zero — регістром, який завжди містить 0.
blt rs, zero, label
Порівняння знакове, тому 32 біти в регістрі читаються як число, яке може бути від'ємним. Розгалуження порівнює два регістри й не може приймати константу, записану в інструкції, тому 0 береться з регістра zero. Див. blt для розгалужень, що порівнюють два значення, і beq про те, як працюють мітки.
Щоб перевірити, чи значення менше нуля, помістіть значення в регістр і застосуйте до нього bltz. Звичайні випадки — перевірка результату віднімання на те, чи не стало воно нижче нуля, і перевірка результату функції, яка повідомляє про помилку від'ємним числом.
sub t0, t1, t2 bltz t0, smaller
Наведені вище рядки виконують перехід до smaller, коли результат віднімання менший за нуль. Результат, що дорівнює точно 0, не є від'ємним і продовжує з наступної інструкції. Протилежне розгалуження, яке також приймає нуль, — це bgez.
Розгортається до
blt rs, zero, label
Асемблер замінює цю псевдоінструкцію реальною інструкцією або інструкціями, переліченими вище.
Приклад
li t0, -3 bltz t0, done # t0 < 0, so jump to 'done'
