零暫存器

零暫存器是一個其數值恆為零的暫存器，在此暂存器寫入資料無效。有一些指令集架構會有零暂存器，例如CDC 6600、MIPS架構、SPARC、Alpha和ARM64等。

零是許多微處理器指令中常見的常數，例如「若數值為0時跳躍」（branch if zero），針對這類指令最佳化，對性能有益。有些架構是由特別的Opcode來進行最佳化，也就是針對基本指令，有特別針對零處理的版本，實現這類指令會需要在中央处理器的指令解碼增加對應的邏輯。若使用零暫存器，也可以進行最佳化，但不需增加新的Opcode，其代價是一個暫存器的值恆為0，少了一個可以使用的暫存器，若是暫存器本來就不多的處理器，會有負面的影響。

X86架構沒有零暫存器，ARM架構在ARM64加入了零暫存器，RISC-V架構有一個名稱為x0的暫存器，其ABI名稱為zero。加入的理由是「專門指定一個暫存器為0，對簡化RISC-V指令集架構有很大的幫助，這和用xor等指令將暫存器清為0不同，後者有用到硬體資源。 」
"

有些指令集架構（像System/360的和POWER/PowerPC/）裡，有特定暫存器的值不一定為0，但當指定該暫存器為時，會視為其數值為零。

參考資料




Category:數位寄存器