保护模式:32位x86处理器编程架构
IA-32架构的基本执行环境
- 寄存器扩展
通用寄存器(32):EAX EBX ECX EDX ESI EDI EBP ESP
指令寄存器(32):EIP
标志寄存器(32):EFLAGS
段寄存器–>段选择子(16):CS DS ES SS FS GS(每个段寄存器都有一个64位的描述符高速缓存器) - 线性地址
在未开启页功能之前,线性地址就是物理地址。当开启页功能后,段部件产生的地址就是线性地址(非物理地址),线性地址还要经过页部件转换后,才是物理地址。
现代处理器的结构和特点
- 流水线
一条指令的执行过程分为取指令、译码和执行三个步骤。
三层级流水线
Pentium 4采用NetBrust微结构,使用了31级超深流水线。 - 高速缓存
- 乱序执行:将指令最小化后,必要时可以乱序执行
- 寄存器重命名:使用临时寄存器替代原有指令中的寄存器,提高执行效率。
- 分支目标预测:分支目标缓存器BTB,提高分支过程的效率
进入保护模式
全局描述符表
段描述符(8字节)
- 全局描述符表(GDT):该表是为整个软硬件系统服务的,进- - 入保护模式前必须定义全局描述符表。
- 全局描述符寄存器(GDTR,48位):包括32位的线性地址和16位的边界地址(数值上等于表的大小,总字节数减一)。

GDT最大64KB,从0x00007e00到0x00017dff。

每个段描述符的大小为8字节,段基地址占32位,段界限占20位。
G(粒度,1bit): 为0段界限以字节为单位,因此此时段能访问的地址空间小为1MB。为1段界限以4KB为单位,此时能访问的地址空间大小为4GB。
**D/B(“默认的操作数大小”或者“默认的栈指针小”又或者是“上部边界”,1bit)😗*设置该标志位主要是为了再32位处理器上运行16位保护模式的程序。(很少使用,书中将其设置为1)

本文详细介绍了32位x86处理器的保护模式编程架构,包括寄存器扩展、流水线工作原理、进入保护模式的步骤,特别是全局描述符表(GDT)和全局描述符寄存器(GDTR)的作用。还讨论了控制保护模式切换和内存访问的机制。
最低0.47元/天 解锁文章
1025

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



