mcu中cpu通用和特殊寄存器

ARM32 一共有 16 个通用寄存器:R0~R15。它们是 CPU 用来存数据、地址、临时变量。

1. R0~R3

  • 函数调用时传参
  • 函数返回值放在 R0
  • 临时计算、临时数据
  • 调用子函数时,这些寄存器不保证被保存(调用者负责保存)

2. R4~R11

  • 真正的局部变量寄存器
  • 调用子函数时必须被保存和恢复(被调用者负责)
  • 适合放循环变量、长期使用的变量

3. R12(IP / Intra-Procedure Call Scratch Register)

  • 不用管,因为mcu的使用场景,R12特殊功能并未启用,当通用寄存器使用。

4. R13(SP,Stack Pointer)

  • 栈指针
  • 永远指向当前栈顶
  • 压栈、出栈、函数栈帧都靠它
  • 不能随便乱改
  • 链接寄存器
  • 执行 BL(带链接跳转)时,返回地址自动存入 LR
  • 函数返回靠 BX LRMOV PC,LR
  • 嵌套调用时必须把 LR 压栈

6. R15(PC,Program Counter)

  • 程序计数器
  • 下一条要执行的指令地址
  • ARM 经典特性:读取 PC 时值 = 当前指令地址 + 8
  • 直接写 PC 就实现跳转
相关推荐
jianqiang.xue6 小时前
ESP-IDF保姆级入门23|MQTT物联网通信全解:发布订阅模式/QoS等级/遗嘱消息/主题设计/断线重连,掌握工业级标准消息通信
stm32·单片机·mcu·物联网·51单片机·iot
HRTOS6 小时前
HRTOS 4.0 Driver Library:03_Sensor 传感器驱动
驱动开发·单片机·嵌入式硬件·51单片机
小麦嵌入式7 小时前
FPGA入门(十一):受控线性序列机 UART 发送升级
stm32·单片机·嵌入式硬件·mcu·fpga开发·硬件工程
jianqiang.xue7 小时前
ESP-IDF保姆级入门29|FreeRTOS任务管理与调度全解:任务创建/状态切换/优先级调度/双核负载均衡/实时性优化,掌握嵌入式多任务编程核心
stm32·单片机·mcu·物联网·51单片机·iot
自小吃多8 小时前
PCB Editor软件走线、修线操作笔记
笔记·嵌入式硬件
新晨单片机设计9 小时前
S008A-基于STM32单片机八路抢答器(数码管)【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus
米饭不加菜9 小时前
STM32——数码管显示
stm32·单片机·嵌入式硬件
梵亿9 小时前
基于 STM32F103C8T6 的无人机低功耗设计与实现
stm32·嵌入式硬件·无人机·低功耗
hrw_embedded10 小时前
Keil开发与STM32Cube开发的差异点总结(未完待续)
stm32·单片机·嵌入式硬件
Brilliantwxx10 小时前
【STM32】RCC与时钟树 深度详解
stm32·单片机·嵌入式硬件·架构