bltzпсевдо

bltz

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

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'