1

我想知道是否可以为 ARM7(特别是 Cortex A8)MMU 设置页表条目的权限,以便允许从页面执行代码,但不允许读取。

如果权限是正交的,您可能会认为如果未设置 XN(从不执行),则无论是否允许读取,都将允许执行。

当然,一些 ARM 代码在执行时从自身读取(例如,获取存储在函数末尾之外的文字),该代码不太可能工作。

如果您尝试执行的代码没有对其自身进行任何读取(更具体地说,是从禁用读取的页面),代码会按预期执行还是会出现数据中止(或其他)异常?

4

1 回答 1

1

答案似乎是否定的。

来自ARM® 架构参考手册 ARMv7-A 和 ARMv7-R 版本B3.7.2 部分

只有当处理器当前状态的访问权限允许读取访问并且 XN 位设置为 0 时,处理器才能执行来自内存区域的指令。

于 2014-07-26T18:58:21.480 回答