Advertisement

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)

还没有任何评论哟~