1 ARM Cortex-M寄存器概述
ARM Cortex-M提供了 16 个 32 位的通用寄存器(R0 - R15),如下图所示。前15个(R0 - R14)可以用作通用的数据存储,R15 是程序计数器 PC,用来保存将要执行的指令。除了通用寄存器,还有一些特殊功能寄存器。特殊功能寄存器有预定义的功能,而且必须通过专用的指令来访问。
Figure 1 1 Core register set summary
2 通用目的寄存器组
2.1 通用目的寄存器 R0-R7
R0-R7 也被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的。
2.2 通用目的寄存器 R8-R12
R8-R12 也被称为高组寄存器。这是因为只有很少的 16 位 Thumb 指令能访问它们,32 位的thumb-2 指令则不受限制。它们也是 32 位字长,且复位后的初始值是不可预料的。
3 堆栈指针 R13
R13 是堆栈指针。在Cortex-M处理器内核中共有两个堆栈指针:MSP(Master Stack Pointer)和PSP(Process Stack Pointer),于是也就支持两个堆栈。
当引用 R13(或写作 SP)时,引用到的是当前正在使用的那一个,另一个必须用特殊的指令来访问(MRS,