ARM内部寄存器

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权威指南》

相关推荐
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Lester_11014 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元4 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133974 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315204 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
Alaso_shuang5 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
脚后跟5 天前
AI助力嵌入式物联网项目全栈开发
嵌入式硬件·物联网·ai编程
2501_918126915 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
z20348315205 天前
STM32F103系列单片机定时器介绍(一)
stm32·单片机
星马梦缘5 天前
驱动层开发——蜂鸣器驱动
stm32·单片机·嵌入式硬件·hal·驱动