本章目标:
1、了解x86处理器的保护模式需要先定义全局描述符表GDT,认识段描述符的各个组成部分以及它们的含义和作用。
2、认识32位处理器的全局描述符表寄存器GDTR、段寄存器(由段选择器和描述符高速缓存器组成)、控制器CR0和段选择子。
3、了解进入32位保护模式的方法和步骤。
4、学习保护模式下的一些程序调试技术,如查看全局描述符表GDT、段寄存器和控制寄存器等。
5、学习lgdt指令
11.1 代码清单
11.2 全局描述符
- 段描述符:保存段的相关信息,包括段基地址以及段界限,8个字节。
- 全局描述符表(Global Descriptior Table,GDT):一系列段描述符在内存空间中的连续排列。进入保护模式前,必须要定义全局描述符表。
- 全局描述符表寄存器(GDTR):定义了全局描述符表的范围。GDTR的32位线性地址部分保存的是全局描述符在内存中的起始线性地址,16位边界部分保存的是全局描述符表的边界,其在数值上等于表的大小(总字节数)减一。
GDT通常都定义在1MB一下的内存范围中,当然,允许在进入保护模式之后换个位置重新定义GDT。
11.3 存储器的段描述符
描述符不是由用户自己建立的,而是在加载时,由操作系统根据你的程序结构而建立的,而用户程序通常是无法建立和修改GDT的。