1.1.1ARM处理器不同形式下寄存器
CPU的形式不同,在其对应形式下能够运用的寄存器也不相同,如表3-2所示:
表3-2 ARM处理器形式下寄存器
寄存器类别 | 寄存器在汇编中的称号 | 各形式下实践拜访的寄存器 | |||||||||||
用户 | 体系 | 办理 | 停止 | 未定义 | 中止 | 快中止 | |||||||
通用寄存器和程序计数器 | R0(a1) | R0 | |||||||||||
R1(a2) | R1 | ||||||||||||
R2(a3) | R2 | ||||||||||||
R3(a4) | R3 | ||||||||||||
R4(v1) | R4 | ||||||||||||
R5(v2) | R5 | ||||||||||||
R6(v3) | R6 | ||||||||||||
R7(v4) | R7 | ||||||||||||
R8(v5) | R8 | R8_fiq | |||||||||||
R9(SB,v6) | R9 | R9_fiq | |||||||||||
R10(SL,v7) | R10 | R10_fiq | |||||||||||
R11(FP,v8) | R11 | R11_fiq | |||||||||||
R12(IP) | R12 | R12_fiq | |||||||||||
R13(SP) | R13 | R13_svc | R13_abt | R13_und | R13_irq | R13_fiq | |||||||
R14(LR) | R14 | R14_svc | R14_abt | R14_und | R14_irq | R14_fiq | |||||||
R15(PC) | R15 | ||||||||||||
状况寄存器 | CPSR | CPSR | |||||||||||
SPSR | 无 | SPSR_abt | SPSR_abt | SPSR_und | SPSR_irq | SPSR_fiq | |||||||
其间R0~R7在一切形式下都能够运用的共有寄存器,R8~R12是快速中止形式下私有的寄存器,其它形式下不能运用,之所以叫其快速中止,是由于快速中止形式下,这几个私有寄存器里数据在形式切换时能够不必入栈保存。
除了用户形式和体系形式共用一组R13,R14,其他每种形式都私有自己的R13,R14,由于在每种形式下都有自己的栈空间用于碑文程序,在碑文程序过程中还要保存回来地址,这样能够确保在进入不同形式时,当时形式下栈空间不被损坏。比方:网卡由于数据抵达,产生了中止进入中止形式,在中止形式下有自己的中止处理例程(ISR),ISR在碑文时要用到栈空间,因而要运用R13,R14。中止处理完成后,回来用户形式下,要继续碑文被网卡中止信号中止的碑文程序。
用户形式和体系形式为什么要共用一组R13,R14呢?这是由于,在特权形式下能够自在切换作业形式,可是假如切换到用户形式下,就不能再切换到特权形式了,这是CPU为操作体系供给的维护机制,可是有的时分就需要切换到用户形式下去运用其R13,R14寄存器,比方当操作体系的进程进行上下文切换时,假如用户形式和体系形式共用一组寄存器,那么能够切换到体系形式下(体系形式是特权形式)进行操作。
一切R15和CPU一起只能处理一条指令,在取指时,有一个CPSR一共当时CPU的状况即可。