zero / x0 能保存数据吗?
不能。x0 读取始终为 0,写入会被忽略。
zero 是 RISC-V 最容易先记住的寄存器:读取 x0 永远得到 0,写入 x0 的结果会被忽略。你会在与零比较、把结果写到 x0、NOP 和部分伪指令写法里反复看到它。
psABI 将 x0 命名为 zero,含义是不可变的零值寄存器。读取始终得到 0,写入不会保存结果。
zero / x0 是 RISC-V 的硬连线零寄存器。读取总是得到 0,写入会被忽略,因此它常用于常量 0、比较零和丢弃写回结果。
zero 不是 ABI 的保存对象:x0 在硬件上硬连线为 0。
无论执行何种指令,读取 zero 都得到 0;写入不会生效。
addi a0, zero, 0 # a0 = 0
add zero, a0, a1 # 计算结果被丢弃
beq a0, zero, done不能。x0 读取始终为 0,写入会被忽略。
x0 可作为常量 0,也可作为丢弃写回结果的目的寄存器。