分组寄存器R8~R14
R8~R12
每个寄存器对应2个不同的物理寄存器
当使用FIQ模式时,访问R8_fiq~R12_fiq
当使用其他模式时,访问R8_usr~R12_usr
R13、R14
每个寄存器对应6个不同的物理寄存器
其中一个寄存器是用户模式与系统模式共用
另外5个物理寄存器对应于其他5种不同的工作模式
不同物理寄存器的区分
R13_<mode>
R14_<mode>
mode为:sys_usr(系统_用户模式)、fiq(快速中断模式)、irq (外部中断模式)、svc(管理模式)、abt(中止模式)、und(未定义指令异常模式)
例如:
R13_usr、R13_fiq、R13_irq
R14_svc、R14_abt、R14_und
R13寄存器
常用作堆栈指针SP(Stack Pointer),一种习惯用法
也可使用其他的寄存器作为堆栈指针
在Thumb指令集中,某些指令强制使用R13作为堆栈指针
在应用程序初始化时,一般都要初始化每种模式下的R13,使其指向该工作模式的栈空间
R14寄存器
也称链接寄存器LR(Link Register)
当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份
BL Label
;下一条指令地址→LR, Label→PC
当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值
其他情况下,R14用作通用寄存器
R15寄存器
R15寄存器用作程序计数器(PC)
ARM状态:位[1:0]为0,位[31:2]用于保存PC
Thumb状态:位[0]为0,位[31:1]用于保存PC
由于ARM体系结构采用了多级流水结构,对于ARM指令集而言,PC总是指向当前执行指令的下两条指令的地址,即PC的值为当前执行指令的地址值加8个字节 (4字节*2 取指(PC)、译码)。
程序状态寄存器的构成
一个当前程序状态寄存器(CPSR)
五个备份程序状态寄存器(SPSR)
备份的程序状态寄存器用来进行异常处理
程序状态寄存器的功能
保存ALU中的当前运行状态
控制允许和禁止中断
设置处理器的工作模式
ARM体系结构的存储结构
从0地址开始的以字节为单位的线性组合
从0字节到3字节放置第一个存储的字数据,从第4个字节到第7个字节放置第二个存储的字数据,依次排列
作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)
受到物理地址线的限制,一般实际嵌入式处理器最大寻址空间为几百兆 |