12、Cortex-M处理器寄存器详解

Cortex-M处理器寄存器详解

1. 栈限制寄存器

Cortex - M处理器采用递减栈操作模型,即向栈中添加更多数据时,栈指针会递减。若向栈中压入过多数据,消耗的空间超过分配的栈空间,溢出的栈数据可能会破坏操作系统内核数据以及其他应用任务使用的内存,从而引发各种错误,甚至导致安全漏洞。

栈限制寄存器用于检测栈溢出错误,它是在Armv8 - M架构中引入的,前代Cortex - M处理器没有该寄存器。栈限制寄存器共有四个,如下表所示:
| 符号 | 寄存器 | 说明 |
| ---- | ---- | ---- |
| MSPLIM_S | 安全主栈指针限制寄存器 | 用于安全MSP的栈溢出检测,适用于Cortex - M33和Cortex - M23处理器 |
| PSPLIM_S | 安全进程栈指针限制寄存器 | 用于安全PSP的栈溢出检测,适用于Cortex - M33和Cortex - M23处理器 |
| MSPLIM_NS | 非安全主栈指针限制寄存器 | 用于非安全MSP的栈溢出检测,适用于Cortex - M33处理器 |
| PSPLIM_NS | 非安全进程栈指针限制寄存器 | 用于非安全PSP的栈溢出检测,适用于Cortex - M33处理器 |

栈限制寄存器为32位,可设置为分配给每个栈的栈地址范围的最低地址。由于这些栈限制寄存器的最低3位(第2位到第0位)始终为零(对这些位的写入会被忽略),所以栈限制始终对齐到双字边界。

默认情况下,栈限制寄存器复位为0(内存映射中的最低地址),这样栈限制不会被达到,即启动时栈限制检查被禁用。当处理器处于特权状态执行时,可以对栈限制寄存器进

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值