not
RISC-V not 伪指令详解
汇编器伪指令RISC-V not 伪指令展开为 xori rd, rs, -1。XORI 将 rs 与符号扩展的 12 位立即数按位异或;立即数为 -1 时实现按位逻辑取反并写入 rd。
你写下的是
not rd, rs
常见真实展开
xori rd, rs, -1
这条伪指令到底在帮你省什么
比 xori rd, rs, -1 更自然可读。利用 XOR 与全 1 的特性——任何位 XOR 1 都会翻转——简洁地实现 NOT 操作。
not 是汇编器层面的简写;按官方展开 xori rd, rs, -1 阅读,并以 XORI 的 ISA 定义判断行为。
官方语义核对重点
RISC-V Assembly Programmer's Manual把 not 作为汇编器层面的伪指令/别名处理,硬件执行的是展开后的真实指令序列。
真实语义以 XORI 等展开指令的 ISA 定义为准;本页不把 not 当作独立硬件 opcode。
展开过程怎么理解
步骤 1
汇编器展开为 xori rd, rs, -1。
步骤 2
XORI 使用符号扩展的 12 位立即数;-1 会扩展为 XLEN 位全 1。
步骤 3
XORI 将 rs 每一位与 1 异或,实现按位翻转。
汇编写法与真实指令
RISC-V Assembly Programmer's Manual 给出的展开为 xori rd, rs, -1。
官方依据与阅读顺序
本页把伪指令当作汇编器层面的别名或宏来解释:先看它会展开成哪些真实指令,再回到官方 ISA 手册理解真实指令的行为。涉及 ABI、重定位或链接器松弛时,以 psABI 文档为准。
什么时候优先想到它
需要取得 rs 的按位逻辑取反结果
使用官方汇编写法 not rd, rs
容易混淆 / 常见误区
XORI 的立即数会从 12 位符号扩展到 XLEN。
xori rd, rs, -1 对 rs 执行按位逻辑取反。
常见问题
not 是真实 RISC-V 指令吗?
not 是汇编器伪指令或别名,不是单独硬件 opcode。页面中的“常见真实展开”列出官方展开,真实行为由展开后的 ISA 指令决定。
使用 not 时最容易误解什么?
NOT 作用于整个寄存器位宽(RV32=32bit, RV64=64bit),注意与预期数据宽度一致