文章目录
IA-32e模式
基础介绍
- 内核64位,用户64位或32位(内核均为64位代码)
- IA32_EFER MSR C0000080H 中的值的第8位为1时,系统处于IA-32模式。
- 在Intel手册上IA32_EFER MSR寄存器构造如下图所示,第8位的含义为IA-32e模式的启动标志位。

在WinDbg中查看IA32_EFER标志位的命令如下:
rdmsr c0000080
在本机的查询结果如下图所示:

可见第8位(从0位开始算)为1,系统处于IA-32e模式。
段描述符
- 代码段,数据段仍使用64位描述符。
- 段描述符中L标志置为1时为64位模式。(DS段没有该项判断)
- 段结构如下图所示。

- 在windbg中使用dq gdtr指令查看段寄存器内容
- 观察到段寄存器3中为CS寄存器,且L位置1,为ring0下64位代码段。

本文深入探讨了IA-32e模式,包括基础介绍、段描述符和权限切换。详细阐述了如何在WinDbg中检查IA32_EFER标志位,并解释了段描述符在64位模式下的变化。此外,还分析了x64和x86用户态在权限切换过程中的不同,特别展示了32位程序如何转换到64位模式并进入内核。
2924

被折叠的 条评论
为什么被折叠?



