sgtz
RISC-V sgtz 伪指令详解
汇编器伪指令大于零则置位伪指令,展开为 slt rd, x0, rs。若 rs 按有符号数大于 0,则 rd=1,否则 rd=0。
你写下的是
sgtz rd, rs
常见真实展开
slt rd, x0, rs
这条伪指令到底在帮你省什么
把常见的符号判断写成一条直观伪指令,实际利用 SLT 与 x0 比较产生 0/1 布尔结果。
sgtz 的核心作用是“有符号大于零置位”。它是汇编器层面的简写;调试、审计或阅读机器码时,应回到页面列出的真实展开指令和相关重定位语义来判断行为。
官方语义核对重点
官方汇编手册把 sgtz 作为汇编器层面的伪指令/别名处理,硬件执行的是展开后的真实指令序列。
真实语义以 SLT 等展开指令的 ISA 定义为准;本页不把 sgtz 当作独立硬件 opcode。
展开过程怎么理解
步骤 1
汇编器展开为 slt rd, x0, rs
在 objdump / 反汇编里可能看到什么
反汇编可能显示伪指令名,也可能显示 slt 与 x0 的真实展开。
官方依据与阅读顺序
本页把伪指令当作汇编器层面的别名或宏来解释:先看它会展开成哪些真实指令,再回到官方 ISA 手册理解真实指令的行为。涉及 ABI、重定位或链接器松弛时,以 psABI 文档为准。
什么时候优先想到它
把有符号比较结果转成 0/1
实现 if 条件前的布尔化
检查符号位含义而不是无符号大小
容易混淆 / 常见误区
使用有符号 SLT;如果需要无符号判断,应使用 SLTU 相关形式
结果只保证是 0 或 1,不是全位掩码
rs=x0 时结果恒为 0
常见问题
sgtz 是真实 RISC-V 指令吗?
sgtz 是汇编器伪指令或别名,不是单独硬件 opcode。页面中的“常见真实展开”列出官方展开,真实行为由展开后的 ISA 指令决定。
使用 sgtz 时最容易误解什么?
使用有符号 SLT;如果需要无符号判断,应使用 SLTU 相关形式