1、RISC指令集
(1)ARM芯片属于精简指令集计算机(RISC:Reduced Instruction Set Computing),它所用的指令比较简单,有如下特点:
- 对内存只有读、写指令。
- 对于数据的运算是在CPU内部实现
- 使用RISC指令的CPU复杂度小一点,易于设计
(2)对于下图所示的乘法运算a = a * b,在RISC中要使用4条汇编指令:
- 读内存a;
- 读内存b;
- 计算a*b;
- 把结果写入内存。

(3)在CPU内部,用什么来保存a、b、a*b ?答案是CPU内部寄存器。
2、CPU的内部寄存器
(1)无论cortex-M3/M4,还是cortex-A7,CPU内部都有R0、R1、......、R15寄存器。

(2)R0-R15寄存器中,R0~R12一般为通用寄存器;对于R13、R14、R15,还另有用途:
- R13:别名SP(Stack Pointer),栈指针。
- R14:别名LR(Link Register),用来保存返回地址。例如函数调用、中断处理完成的返回地址。
- R15:别名PC(Program Counter),程序计数器,表示当前指令地址,写入新值即可跳转。
(3)乘法运算a = a + b,对应的4条汇编指令的理解:
LDR R0, [a] ; 将内存地址a中的数据加载到寄存器R0
LDR R1, [b] ; 将内存地址b中的数据加载到寄存器R1
ADD R0, R0, R1 ; 将R0与R1的值相加,结果存回R0
STR R0, [a] ; 将R0的值存回内存地址a,更新变量a的值
(4)寄存器的含义:寄存器有CPU内部自己的寄存器,有设备上的寄存器,它们是完全不同的。
3、M3/M4 CPU内部寄存器

4、A7CPU内部寄存器
(1)寄存器

(2)A7支持多种启动方式,不同启动方式对应寄存器如下。

5、程序状态寄存器
5.1、cortex-M3/M4
(1)对于cortex-M3/M4来说,xPSR实际上对应3个寄存器,这3个寄存器的如下所示:
- APSR:Application PSR,应用PSR
- IPSR:Interrupt PSR,中断PSR
- EPSR:Exectution PSR,执行PSR

(2)程序状态急促请你中的位域描述:
(3)这3个寄存器,可以单独访问:
- MRS表示:Moveto Register from Status,就是把Status寄存器的值移动到通用寄存器
- MRS R0, APSR ;读APSR
- MRS R0, IPSR ;读IPSR
- MSR APSR, R0 ;写APSR
(4)这3个寄存器,也可以一次性访问:

- MRS R0, PSR ; 读组合程序状态
- MSR PSR, R0 ; 写组合程序状态
5.2、cortex-A7
(1)对于cortex-A7,叫做Current Program Status Register,即当前程序状态寄存器。


参考资料:
《ARM Cortex-M3与Cortex-M4权威指南》