我想知道是否可以在ARM7(特定于Cortex A8)MMU的页表条目上设置权限,以允许从页面执行代码,但不允许读取。
如果权限是正交的,您可能会认为如果未设置XN(从不执行),则无论是否允许读取,都将允许执行。
当然,一些ARM代码在执行时从自身读取(例如,为了获得存储在函数末尾之外的文字),该代码不太可能有效。
如果您尝试执行的代码没有从自身执行任何读取(更具体地说,从禁用读取的页面),代码是否会按预期执行,或者您是否会获得数据中止(或其他)例外?
答案 0 :(得分:1)
似乎答案是 no 。
来自ARM®体系结构参考手册ARMv7-A和ARMv7-R版本部分B3.7.2
处理器可以 仅当当前状态的访问权限允许读访问且XN位设置为0时,才从内存区域执行指令。