bgtz伪

bgtz

伪
RISC-V 汇编 参考

lyszt.net 更详细地介绍了 bgtz 和其他 RISC-V 指令。

描述

bgtz 在寄存器中的值为正时进行分支。该名称意为 branch if greater than zero。下面的形式在 rs 大于零时跳转到带标签的位置,否则继续执行下一条指令。

bgtz rs, label

汇编器将其视为伪指令,并将其重写为下面的指令,该指令询问 zero 是否小于该寄存器。

blt zero, rs, label

RISC-V 没有用于 greater than 的分支,因此交换操作数,由 less-than 分支完成工作,这与 bgt 的构建方式相同。比较是有符号的。零不会分支,这将 bgtz 与 bgez 区分开来。有关底层分支,请参见 blt。

bgtz 适用于在还有待处理内容时应继续的循环,例如剩余项数大于零。它还测试结果是否大于零。

bgtz a0, found

当 a0 保存 1 或更多时,上面的行跳转到 found。值为 0 或任何负数时继续执行下一条指令。

展开为

blt zero, rs, label

汇编器会将此伪指令替换为上面列出的真实指令或指令。

示例

li t0, 4
bgtz t0, done   # t0 > 0, so jump to 'done'