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

相关推荐
极客 - L U1 小时前
卡尔曼滤波从零到精通
c语言·数据结构·单片机·嵌入式硬件·mcu
AMASENSYS艾马斯2 小时前
变频器滤波器选型与EMC合规建议
驱动开发·单片机·其他·硬件工程·精益工程
码小文3 小时前
CAM350使用笔记(6)---Gerber文件铺铜间距检查
嵌入式硬件·cam350软件·cam350使用笔记
Yiran_G5 小时前
双频 Wi-Fi 6 + 蓝牙 5.4:无声讯通 WS8712 模组的开发与集成要点
网络·嵌入式硬件·物联网·智能家居
光子物联单片机5 小时前
ESP32传感器模块编程实践(一)DIY智能WIFI视频控制小车
嵌入式硬件·esp32·智能硬件·硬件
2501_922639586 小时前
率能半导体 SS6628E直流双向马达驱动芯片:20V/7A,覆盖电子锁、玩具、无线充电、机器人四大应用场景
单片机·嵌入式硬件·硬件工程
硅基造物主6 小时前
STM32 从 0 到 1 做智能家居(五):工程结构与代码骨架
stm32·单片机·嵌入式硬件·智能家居
深圳老胡6 小时前
STM32F103 硬件 SPI 与软件 IO 模拟 SPI 最高速度差异详解
笔记·stm32·单片机·代码规范·1024程序员节
smartpi_ai7 小时前
机芯智能离线语音模块实战问答:SU-03T、CI-03T、SU-63T 与 JX-A7T 高频问题排查
人工智能·单片机·嵌入式硬件·ci/cd·语音识别
2501_922639587 小时前
率能半导体 SS6635E直流双向马达驱动芯片:30V/4.5A,覆盖电子锁、玩具、无线充电、机器人四大应用场景
单片机·嵌入式硬件·硬件工程