Bochs源码分析 - 20: 启动保护模式
发布时间
阅读量:
阅读量
前言
在邓志老师所著的《x86/x64体系探索及编程》一书中,详细介绍了进入保护模式的操作流程。本人曾尝试查阅intel官方手册,但未能找到相关说明(可能确实存在相关内容,只是暂时未能定位,后续若发现将进行补充)。 ---> 补充:在intel手册第三卷的9.8与9.9节中,对保护模式的初始化过程进行了阐述,这一信息是在查询cr0寄存器相关内容时从手册中获得的。
本文将重点解析保护模式初始化的具体实现方式,并对相关代码进行深入探讨,可能不会涉及对bochs源码的分析。
开启保护模式
在启动保护模式之前,需要构建一个完整的运行环境,以下系统表是必须建立的:
① GDT;
② IDT;
③ TSS段。
在设置 CR0.PE 标志之前,GDT必须已经建立,而IDT与TSS则允许在进入保护模式之后进行构建 。以下环境为可选配置。
① 分页机制;
② LDT;
③ 处理器的任务切换机制。
在传统模式下的保护模式中,分页功能可以被禁用,此时虚拟地址将直接映射为物理地址。LDT与任务切换机制则用于支持多任务处理环境。
setup.asm 汇编代码分析
在common\setup.asm文件中,上述流程对应的代码已被编写完成,接下来我们将逐一进行解析。
首先需要处理的是idt段与gdt段的加载操作,该过程通过调用lidt与lgdt指令实
全部评论 (0)
还没有任何评论哟~
