ARM内核是如何分辨出写内存越界的?

2019-10-15 02:23发布

比如在函数里开个数组,故意写越界,然后32就会跳到hardfault。是什么硬件在做内存越界的保护?难道是CPU能自己分析栈区的情况吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
嗷大喵
1楼-- · 2019-10-16 00:56
xinxian 发表于 2017-2-14 16:34
请问  是什么手册

其实内存越界cpu是分辨不出来的,只有当程序破坏了cpu的某些重要内存区域或者违反了cpu的硬件设定,比如直接使用指针索引写入内部rom等等。
mack13013
2楼-- · 2019-10-16 04:09
windows的内存分配是有标识符的,比如某些区域是只读的,如果有某个写内存操作目的地址的标识符是只读的,那么就会报错了。估计STM32也是同样的吧。

当然也有越界不报错的情况,比如你分配了10个字节可写的,然后紧跟着分配了1K可写的,你在写入前10个字节时,写入了100个,估计STM32还是不会报错(其实windows也可以这样构造而不报错)。

个人猜想。

一周热门 更多>