2024年3月24日发(作者:)
Cortex-M4为32位处理器内核。该处理器包含以下32位寄存器:
13个通用寄存器(r0-r12)
堆栈指针(SP),别名为“banked”寄存器。主堆栈指针SP_main和进程堆栈指针
SP_process。
连接寄存器LR(r14)
程序计数寄存器(PC), r15
特殊功能程序状态寄存器(xPSR)
下图给出了Cortex-M4处理器的寄存器组:
图 Cortex-M4处理器的寄存器组
1. R0‐R12是最具“通用目的”的32位通用寄存器,用于数据操作。大部分能够访问
通用寄存器的指令都可以访问r0-r12。其中:
✓ 低组寄存器(r0-r7)能够被所有访问通用寄存器的指令访问。
✓ 高组寄存器(r8-r12)能够被所有32位通用寄存器指令访问,而不能被所有的16位
指令访问。
2. 寄存器r13、 r14和 r15具有以下特殊功能:
✓ 堆栈指针——寄存器r13被用作堆栈指针(SP)。堆栈指针用于访问堆栈,因为SP
忽略写入到[1:0]位(即最低两位永远是0),则堆栈是按照字对齐(4个字节对齐)。
主堆栈指针SP_main是复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理
例程(包括中断服务例程)。“Handler”模式总是使用SP_main主堆栈指针,但是你也可
以配置成“Thread”模式来使用SP_main主堆栈指针或者SP_process进程堆栈指针。
✓ 连接寄存器——寄存器r14为子程序连接寄存器(LR)。当一个Branch and Link (BL)
或 Branch and Link with Exchange (BLX)指令被执行后,LR从PC获取返回地址。
LR也被用于异常返回。
在其他情况下,你可以把r14当做一个通用寄存器。
✓ 程序计数寄存器——寄存器r15是程序计数寄存器(PC)。指向当前的程序地址。如
果修改它的值,就能改变程序的执行流(很多高级技巧隐藏其中)。该寄存器的[0]位永远
为0,则指令总是按照字对齐或者半字对齐。
在“ARMv7-M Architecture Reference Manual”可获取更多信息。
.


发布评论