blez
伪lyszt.net 更详细地介绍了 blez 和其他 RISC-V 指令。
描述
blez 在寄存器中的值为零或负数时进行分支。这个名称的意思是“小于或等于零时分支”。下面的形式在 rs 至多为零时跳转到带标签的位置,否则会继续执行下一条指令。
blez rs, label
汇编器将其视为伪指令,并重写为下面的指令,该指令询问 zero 是否大于或等于该寄存器。
bge zero, rs, label
操作数被交换,因为 RISC-V 没有小于或等于分支,所以由 bge 来完成这项工作,这与 ble 的构建方式相同。比较是有符号的。零分支将 blez 与 bltz 区分开来,并且它与 bgtz 相反,因此对于任何值,两者中恰好有一个会进行分支。底层分支请参见 bge。
blez 适合用于检查是否已无事可做。处理剩余项计数的循环可以在计数为零或已低于零时立即退出。
blez t0, done
上面的行在 t0 为 0 或负数时跳转到 done。
展开为
bge zero, rs, label
汇编器会将此伪指令替换为上面列出的真实指令或指令。
示例
li t0, 0 blez t0, done # t0 <= 0, so jump to 'done'
