前言
在邓志老师的《x86/x64体系探索及编程》中讲述了开启保护模式的顺序,我尝试着翻阅intel手册,但很遗憾似乎自己没有找到对此的描述(应该是有的,但是自己没找到,日后找到了会补充上)。 ---> 补充:在intel卷三 9.8 9.9 对保护模式初始化有讲述,查找cr0寄存器时从手册上看到的。
我们这篇文章来分析其如何初始化保护模式,着重来分析代码,可能不会来分析bochs源码。
开启保护模式
在开启保护模式之前,必须建立一个完整的保护模式运行环境,下面的系统表格是必须建立的:
① GDT;
② IDT;
③ TSS段。
在打开 CR0.PE 标志前,GDT必须被建立,IDT和TSS允许进入保护模式后才建立。下列环境是可选的。
① paging机制;
② LDT;
③ 处理器的TSS任务切换机制。
在legacy模式的保护模式里paging可以被关闭,虚拟地址直接变为物理地址。LDT和TSS任务切换机制被用于多任务环境里。
setup.asm 汇编代码分析
在common\setup.asm中,实现了上述过程的代码,我们现在依次来分析一下。
&nbs

本文详细分析了如何开启x86/x64系统的保护模式,包括GDT、IDT、TSS的建立,以及CR0.PE标志位的修改。通过分析`setup.asm`汇编代码和Bochs模拟器的源码,阐述了保护模式切换的步骤,并引用Intel手册中的描述进行了验证。最后,指出了阅读Intel手册的重要性,并预告了对分页机制的进一步探索。
最低0.47元/天 解锁文章
2795

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



