ZHCUAN6E October 2022 – May 2025 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
Arm Cortex-M0+ 处理器指令在 CPU 寄存器文件中的寄存器上运行。处理器包含一个由 16 个标准寄存器和 3 个专用寄存器组成的寄存器文件,如图 3-2 所示。
该处理器提供 13 个通用寄存器 R0-R12,用于对数据进行操作。寄存器 R0 至 R7(低位寄存器)可通过指定通用寄存器的所有指令访问。寄存器 R8 至 R12(高位寄存器)不能通过 16 位指令访问,但可以通过指定通用寄存器的任何 32 位指令访问。
栈指针位于 R13 中,包含主栈指针 (MSP) 或进程栈指针 (PSP)。当处理器以处理程序模式运行时,始终使用主栈指针 (MSP)。当处理器以线程模式运行时,可以使用 MSP 或进程栈指针 (PSP),具体取决于 CONTROL 寄存器中 SPSEL 位的配置。
在 CPURST 之后,处理器会自动无条件地从主闪存的第一个地址 (0x0000.0000) 提取默认栈指针作为主栈指针 (MSP)。
R14 用作连接寄存器,包含函数调用和异常的返回值。连接寄存器必须设置后方可使用,因为它不会复位为任何已知值。在特权模式和非特权模式下均可访问。
程序计数器寄存器 (R15) 包含下一条待执行指令的地址。在特权和非特权模式下可访问 PC。
在 CPURST 之后,处理器会自动无条件地从主闪存的第二个字 (0x0000.0004) 提取默认 PC。
专用寄存器包括程序状态寄存器 (PSR)、中断屏蔽寄存器 (PRIMASK) 和控制寄存器 (CONTROL)。专用寄存器通常通过 CPS、MRS 和 MSR 系统指令进行访问。
| 助记符 | 包括子寄存器 |
|---|---|
| APSR | APSR |
| IPSR | IPSR |
| EPSR | EPSR |
| IAPSR | IPSR 和 APSR |
| EAPSR | EPSR 和 APSR |
| XPSR | APSR、IPSR、EPSR |
| IEPSR | IPSR 和 EPSR |