编辑: LinDa_学友 2019-07-09

第一章.

概述 1.1

80386 保护模式简介 本章的主要内容是介绍

80386 保护模式. 1. 保护模式简介 Intel 推出 x86 架构已近

30 年,刚开始推出的

8086 处理器是一款

16 位的处理器,它标 志着 x86 架构的诞生,这种

16 位处理器数据总线是

16 位的,而地址总线是

20 位的,最多 可以寻址 1MB 的地址空间.之后的

80286 处理器也是

16 位,但是地址总线有

24 位,而且 从80286开始CPU演变出两种工作模式: 实模式和保护模式;

而80386则是Intel推出的80x86 系列中的第一款

32 位处理器,它的数据总线与地址总线都是

32 位,可以寻址 4G 的地址空 间;

AMD 公司随后在

2000 年又在 x86 架构的基础上推出了 x86-64 处理器架构, AMD 的处 理器可以兼容

32 位的指令集,所以它既是

64 位的又是

32 位的. 在x86 架构中,16 位的处理器与

32 位处理器所对应的寄存器是有所不同的.像8086 寄存器组就分为通用寄存器、 专用寄存器和段寄存器三类总共

15 个, 其中通用寄存器有 AX、 BX、CX、DX、SP、BP、DI 及SI,专用寄存器包括 IP、SP 和FLAGS 三个

16 位寄存器, 而段寄存器则有 CS、DS、SS、ES,这些寄存器都是

16 位的.32 位x86 架构对应的寄存器 则共有

34 个,其中包括 EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP

8 个32 位的通用 寄存器;

6 个16 位的段寄存器 CS、DS、SS、ES、FS、GS,相比

8086 增加了 FS 和GS;

GDTR、LDTR、IDTR 和TR 四个系统地址寄存器;

EFLAGS、EIP、CR0---CR3

6 个状态和 控制寄存器, 在这里标志寄存器 EFLAGS 与指令指针寄存器 EIP 都从

16 位进化到了

32 位;

还有就是增加了一些调试寄存器、段描述符寄存器以及测试寄存器. 表1-18086 和86386 的寄存器的对比

8086 的寄存器

80386 的寄存器 通用寄存 器AX、 BX、 CX、 DX、 SP、 BP、DI、SI EAX、EBX、ECX、EDX、ESI、EDI、EBP、 ESP 段寄存器 CS、DS、SS、ES CS、DS、SS、ES、FS、GS 段描述符 寄存器 无 对程序员不可见 状态和控 制寄存器 FLAGS 、IP EFLAGS、EIP、CR

0、CR

1、CR

2、CR3 系统地址 寄存器 无GDTR、IDTR、TR、LDTR 调试寄存 器无DR0--DR7 测试寄存 器无TR0--TR7 保护模式(Protected Mode) 是一种和

80286 系列及之后的 x86 兼容 CPU 操作模 式.保护模式有一些新的特色,设计用来增强多功能和系统稳定度,比如内存保护、 分页、系统以及硬件支持的虚拟内存.大部分的现今 x86 操作系统都在保护模式下 运行,包含 Linux、FreeBSD、以及 微软 Windows 2.0 和之后版本.需要指出的是, 保护模式在增加这些新特性的同时,也带来了系统软件设计的复杂性 在8086 时代,CPU 中设置了四个段寄存器:CS、DS、SS 和ES,分别用于可执 行代码段、数据段以及堆栈段.每个段寄存器都是

16 位的,对应于地址总线中的高

16 位.每条 访存 指令中的内部地址也都是

16 位的,但是在送到地址总线之前, CPU 内部会自动地把它与某个段寄存器中的内容相加. 因为段寄存器中的内容对应于

20 位地址总线中的高

16 位(也就是把段寄存器左移

4 位),所以相加时实际上是地址 总线中的高

12 位与段寄存器中的

16 位相加,而低

4 位保留不变,这样就形成一个

20 位的实际地址, 也就实现了从

16 位内存地址到

20 位实际地址的转换, 或者叫 映射 . 段式内存管理带来了显而易见的优势:程序的地址不再需要采用内存物理地址进 行编码了,调试错误也更容易定位了,更可贵的是支持更大的内存地址,程序员开始 获得了自由. 然而,8086 系统很难从硬件层面对软件系统进行保护,在该环境下, 应用程序可以直接对系统的任意内存地址(包括操作系统所在的区域)进行操作,所 以该系统的安全漏洞几乎是显而易见的. 到了

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题