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 就实现跳转
相关推荐
驱动探索者29 分钟前
RISC-V PLIC 深度解析:从 Spec 到 Zephyr 驱动实现
单片机·嵌入式硬件·中断控制器
LCG元1 小时前
STM32 FreeRTOS 实战:任务调度 + 互斥锁 + 消息队列 + 串口命令解析器
stm32·单片机·嵌入式硬件
Hello_Damon_Nikola1 小时前
姿态式饮水量估算从原理到实战
嵌入式硬件
LCG元1 小时前
STM32 SPI Flash 读写实战:W25Q64 驱动 + FatFS 文件系统移植 + 日志存储系统
stm32·单片机·嵌入式硬件
不想学习!!2 小时前
【STM32 基础复习 01】初识 STM32F103ZET6:型号、封装、引脚编号与特殊引脚
stm32·单片机·嵌入式硬件
wuyk5552 小时前
66.嵌入式C语言进阶:共用体(Union)实战指南——单片机内存省一半的神级技巧
c语言·开发语言·stm32·单片机·嵌入式硬件
ACP广源盛139246256735 小时前
此芯 P1 AI BOX / AI NAS@ACP#IX8008、IX8024 应用场景与市场机会
大数据·人工智能·分布式·单片机·嵌入式硬件
广药门徒11 小时前
虚拟机联网20260725
嵌入式硬件
国产化创客12 小时前
Kindle 嵌入式交叉开发环境
嵌入式硬件·智能硬件
szxinmai主板定制专家14 小时前
RK3568+FPGA高速并行采集|半导体探针测试设备多通道同步数据采集系统设计
人工智能·嵌入式硬件·计算机视觉·fpga开发