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'
