与(大多数)RISC 架构不同,x86 指令具有可变长度。指令的开始/结束不必对齐。如果编译器没有,一条指令可能就在页边距上。
假设如果指令的第一个字节位于页面的最后一个字节,则该页面被标记为可执行。指令的其余字节位于第二页,该页被标记为不可执行。
在这种情况下,当执行到这条指令时,CPU 会发生什么?
编译器需要关心这种情况吗?
最佳答案
硬件将(应该,尚未测试)生成 GPF。
编译器不应该关心。
关于memory - 硬件和编译器如何处理跨入不可执行页面的 x86 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6659998/