一. ARM 工作模式
1. ARM7,ARM9,ARM11,处理器有 7 种工作模式;Cortex-A 多了一个监视模式(Monitor)
2. 用户模式:非特权模式,大部分任务执行在这种模式,它运行在操作系统的用户态,没有权限操作其他硬件资源,只能执行处理自己的数据,也不能切换到其他模式下
3. 快速中断模式 : 当一个高优先级(fast) 中断产生时将会进入这种模式
4. 普通中断模式 : 当一个低优先级(normal) 中断产生时将会进入这种模式
5. 管理模式(SVC) :当复位或软中断指令执行时将会进入这种模式
6. 中止模式 : 当存取异常时将会进入这种模式 Undef : 当执行未定义指令时会进入这种模式
7. 系统模式 : 使用和User模式相同寄存器集的特权模式 Cortex-A 增加的工作模式:
8. 监控模式 : 是为了安全而扩展出的用于执行安全监控代码的模式
二. ARM 指令集
ARM指令集:一条指令占 32 位 ,4字节,影响 PC 中的地址
Thumb指令集: 一条指令占 16 位 ,2字节
三. ARM 寄存器
Cortex-A 寄存器:标三角的是相应模式状态下的独立的寄存器;其他事通用寄存器,也就是各个模式下可以共同使用的寄存器;Cortex-A 共40个寄存器, 共23 个特殊功能寄存器,17 个通用寄存器。
R13 :栈指针寄存器 SP 保存栈内存空间的首地址值
R14:链接寄存器 LR 保存函数返回地址值
R15:当前程序计数器 PC 保存当前取址指令的地址值
CPSR:当前程序状态寄存器
SPSR:保存程序状态寄存器,用来保存 CPSR 值
PC 寄存器指向的地址值:
对于ARM 状态(arm指令集), PC 寄存器的低2位没有定义 PC[1,0] ,arm指令占 4字节,也就是PC 中地址是4的倍数
对于Thumb状态(Thumb指令集),PC寄存器的低1位没有定义 PC[0],Thumb占 2字节,也就是PC中地址是 2 的倍数, PC 中的地址就是每条执行指令的地址
CPSR 寄存器中各bit 对应的功能
原文地址:https://www.cnblogs.com/electronic/p/11027006.html