snez
RISC-V snez 伪指令详解
汇编器伪指令RISC-V snez 伪指令展开为 sltu rd, x0, rs。SLTU 进行无符号比较;该形式仅在 rs 非零时向 rd 写入 1,否则写入 0。
你写下的是
snez rd, rs
常见真实展开
sltu rd, x0, rs
这条伪指令到底在帮你省什么
直接表达非零检测:SLTU 使用无符号比较,0 < rs 当且仅当 rs != 0。rs 非零时结果为 1,否则为 0。
snez 是汇编器层面的简写;按官方展开 sltu rd, x0, rs 阅读,并以 SLTU 的 ISA 定义判断行为。
官方语义核对重点
RISC-V Assembly Programmer's Manual把 snez 作为汇编器层面的伪指令/别名处理,硬件执行的是展开后的真实指令序列。
真实语义以 SLTU 等展开指令的 ISA 定义为准;本页不把 snez 当作独立硬件 opcode。
展开过程怎么理解
步骤 1
汇编器展开为 sltu rd, x0, rs。
步骤 2
SLTU 执行无符号比较:若 x0(0) < rs(即 rs != 0),则 rd = 1;否则 rd = 0。
汇编写法与真实指令
RISC-V Assembly Programmer's Manual 给出的展开为 sltu rd, x0, rs。
官方依据与阅读顺序
本页把伪指令当作汇编器层面的别名或宏来解释:先看它会展开成哪些真实指令,再回到官方 ISA 手册理解真实指令的行为。涉及 ABI、重定位或链接器松弛时,以 psABI 文档为准。
什么时候优先想到它
需要在 rs 非零时向 rd 写入 1,否则写入 0
使用官方汇编写法 snez rd, rs
容易混淆 / 常见误区
SNEZ 的展开使用无符号比较 SLTU。
SLTU rd, x0, rs 在 rs 非零时写入 1,否则写入 0。
常见问题
snez 是真实 RISC-V 指令吗?
snez 是汇编器伪指令或别名,不是单独硬件 opcode。页面中的“常见真实展开”列出官方展开,真实行为由展开后的 ISA 指令决定。
使用 snez 时最容易误解什么?
SNEZ 基于无符号比较——但 0 < rs(无符号)当且仅当 rs != 0,语义在所有情况下都正确