Cortex-M 处理器寄存器详解
1. 栈限制寄存器
1.1 栈操作模式
Cortex - M 处理器采用降序栈操作模型,即向栈中添加更多数据时,栈指针会递减。若向栈中压入过多数据,消耗的空间超过分配的栈空间,溢出的栈数据可能会破坏操作系统内核数据和其他应用任务使用的内存,从而引发各种错误,甚至导致安全漏洞。
1.2 栈限制寄存器的作用与特点
栈限制寄存器用于检测栈溢出错误,它是在 Armv8 - M 架构中引入的,前代 Cortex - M 处理器没有该寄存器。共有四个栈限制寄存器,如下表所示:
| 符号 | 寄存器 | 说明 |
| ---- | ---- | ---- |
| MSPLIM_S | 安全主栈指针限制寄存器 | 用于检测安全主栈指针(MSP)的栈溢出,适用于 Cortex - M33 和 Cortex - M23 处理器 |
| PSPLIM_S | 安全进程栈指针限制寄存器 | 用于检测安全进程栈指针(PSP)的栈溢出,适用于 Cortex - M33 和 Cortex - M23 处理器 |
| MSPLIM_NS | 非安全主栈指针限制寄存器 | 用于检测非安全主栈指针的栈溢出,适用于 Cortex - M33 处理器 |
| PSPLIM_NS | 非安全进程栈指针限制寄存器 | 用于检测非安全进程栈指针的栈溢出,适用于 Cortex - M33 处理器 |
栈限制寄存器为 32 位,可设置为分配给每个栈的栈地址范围的最低地址。由于这些栈限制寄存器的最低 3 位(第 2 位到第 0 位)始终为零(对这些位的写入会被忽略),所以栈限制始终与双字边
超级会员免费看
订阅专栏 解锁全文

1684

被折叠的 条评论
为什么被折叠?



