zero / x0 能保存数据吗?
不能。x0 读取始终为 0,写入会被忽略。
psABI 将 x0 命名为 zero,含义是不可变的零值寄存器。读取始终得到 0,写入不会保存结果。
zero / x0 是 RISC-V 的硬连线零寄存器。读取总是得到 0,写入会被忽略,因此它常用于常量 0、比较零和丢弃写回结果。
zero 不参与调用约定保存责任,因为它永远读出 0。
函数调用前后 zero 的值都不会变化。
addi a0, zero, 0 # a0 = 0
add zero, a0, a1 # 计算结果被丢弃
beq a0, zero, done不能。x0 读取始终为 0,写入会被忽略。
x0 可作为常量 0,也可作为丢弃写回结果的目的寄存器。