除31个核心寄存器外,还有几个特殊寄存器。
(1)zero寄存器
此寄存器作为源寄存器时,读取为0;作为目标寄存器时,丢弃结果。可在大多数指令中使用。
(2)PC寄存器
对应于ARMV7指令集中的R15。
PC寄存器使能了一些编程技巧,但是也给编译器增加了复杂性。ARMV8中去除了对PC的直接访问。它只能在一些PC寄存器相关的特定指令中隐式访问。PC不能作为数据处理指令或加载指令的目的。
(3)SP寄存器
区分不同的异常级别,EL0只能使用SP_EL0,而其他级别可使用对应级别的SP,或是使用SP_EL0。
多数指令不能访问SP。有一些算数指令可以访问,如ADD指令,可读写当前的SP,以调整一个函数中的SP。
(4)PSR寄存器
进入异常前,PSR寄存器存储PSTATE的值,从执行异常返回时,用于恢复PSTATE。
(5)ELR寄存器
ELR寄存器存储异常返回地址