区分x86_64 MMU上的代码页和数据页

区分x86_64 MMU上的代码页和数据页,x86,paging,qemu,X86,Paging,Qemu,我试图在系统仿真模式下评测qemu。目标是能够识别页面错误,并将其分类为数据页面错误或代码页面错误 在研究了x86_64体系结构(这就是正在模拟的体系结构)之后,我无法区分代码页和数据页。MMU是否区分它们 发生页面错误时,使用处理器推送到堆栈上的错误代码确定错误原因。图6-9中的第3A卷对此进行了描述。具体地说,I/D位指示指令提取是否导致故障 --编辑-- CPU将错误代码推送到标准异常堆栈帧之后的监控器堆栈上。有关堆栈帧的图片,请参见《程序员参考》中的图6-8。当控制传输到处理程序时,ES

我试图在系统仿真模式下评测qemu。目标是能够识别页面错误,并将其分类为数据页面错误或代码页面错误


在研究了x86_64体系结构(这就是正在模拟的体系结构)之后,我无法区分代码页和数据页。MMU是否区分它们

发生页面错误时,使用处理器推送到堆栈上的错误代码确定错误原因。图6-9中的第3A卷对此进行了描述。具体地说,I/D位指示指令提取是否导致故障

--编辑--


CPU将错误代码推送到标准异常堆栈帧之后的监控器堆栈上。有关堆栈帧的图片,请参见《程序员参考》中的图6-8。当控制传输到处理程序时,ESP会指向错误代码。

qemu的模拟cpu也会出现这种情况吗?qemu应该正确地模拟这种行为,所以是的,你可以使用它。你能详细说明这个错误被推到哪里吗?读了12个小时的英特尔文档后,我似乎被卡住了。这个错误被推到哪个堆栈上?是的,就是它。ESP指向错误代码。qemu中的一个简单的按位or给了我想要的。非常感谢。在我的问题中发布我的实现细节是明智的,还是qemu代码无关紧要?这是一个很小的利基,所以我个人不会麻烦用代码更新。你的问题很清楚。