32位x86处理器架构

    包括了intel IA-32系列成员和所有32位AMD处理器。

  1 操作模式

    x86处理器有三个主要模式分别是:保护模式,实地址模式和系统管理模式以及一个保护模式的特殊模式的子模式:虚拟8086模式。

    引入一个定义:程序在运行被分配的内存称之为段。

    1.1 实地址模式(Real-Address Mode)

      处理器最纯正的模式,可以访问任何段内存。是最初intel处理器的编程环境,可以切换到其它模式

    1.2 保护模式(Protected Mode)

      保护模式也就是处理器的原生状态,可以采用所有指令和特征。程序在运行被分配的内存称为段,但是处理器不允许程序使用除了段以外的其它内存。相当于对实地址模式起了一个保护作用,只能操作当前程序。

    1.3 虚拟8086模式(Virtual-8086 Mode)

      是在保护模式下直接执行实地址模式的软件。如MS-DOS程序。相当于在保护模式下执行实地址模式的软件来模拟实地址模式操作。

    1.4 系统管理模式(System Management Mode)

      SMM模式常常是由制造商来实现,他们为特定的系统设置而定制处理器。比如:电源管理和系统安全等。

 

  2 基本执行环境

    2.1 地址空间

      在32位保护模式下,一个任务和和程序最大可以寻址4GB的线性地址空间(3个1024和4相乘的结果就是4GB),从P6处理器开始,通过扩展物理寻址的技术可以使得被寻址的物理内存空间增加到64GB。反之实地址模式只能寻址1MB空间。

    

    2.2 基本程序执行-寄存器

      寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,存放n位二进制代码的寄存器,需用n个触发器来构成。

      寄存器直接位于CPU内的高速存储位置,访问速度快,远高于传统存储器。

 

 

         寄存器总总览(包含了8个通用寄存器,6个16位段寄存器,一个状态处理器EFLAGS和一个指令指针寄存器)

        

        2.2.1 通用寄存器

          通常用来处理算术运算和数据传递。部分童永刚寄存器可以划分成16位和8位寄存器来处理

 

32位 16位 高8位 低8位
EAX AX AH AL
EBX BX BH BL
ECX CX CH CL
EDX DX DH DL

          其它通用寄存器只能分为32位和16位

32位 16位
ESI SI
EDI DI
EBP BP
ESP SP

          某些通用寄存器有特殊用法

寄存器 用法
EAX 加减乘除默认用EAX,常被称为累加寄存器
ECX

CPU通常把ECX作为循环计数器

ESP 用于寻址堆栈数据
ESI和EDI 用于高速存储器传输指令
EBP 高级语言通过EBP来引用堆栈中的函数参数和局部变量

 

 

        2.2.2段寄存器

          实模式中:

            16位段寄存器表示预先分配的内存区域基址

          保护模式中:

            段寄存器中存放的是段描述符表指针,还有一个堆栈段存放的是局部变量和函数参数

 

      

        2.2.3 指令指针

          指针指令寄存器(EIP)包含下一条将要执行的指令的地址。

        2.2.4  EFLAGS寄存器

          EFLAGS(flags)寄存器用来控制CPU和反应CPU的操作。

        2.2.5  控制标志位

          控制标志位控制CPU的操作

        2.2.5  状态标志位

          状态标志位反映CPU执行的算术和逻辑操作结果。包括:溢出位、符号位、零标志位、辅助进位标志位、奇偶标志位和进位标志位。

    

进位标志位CF  无符号运算太大是需要设置
溢出标志位OF 有符号运算过大过小都需要设置 
符号标志位SF 产生负结果的时候需要设置 
零标志位ZF 结果为零时需要设置 
辅助进位标志位AC 产生进位的时候需要设置 
奇偶效验标志位PF  最低有效字节包含偶数个1时设置,否则清楚。通常用来错误检测检查数据是否被修改和损坏

        

 

      3 MMX寄存器

        8个64位寄存器支持SIMD(单指令,多数据)的特殊寄存器。MMX指令对MMX寄存器的数据值进行并行操作

      4 XMM寄存器

        x86包括了8个128位XMM寄存器,用于SIMD流扩展指令集

        浮点单元:

          浮点单元(FPU,floating-point unit)执行高速浮点算术运算。FPU有八个浮点数据寄存器,3个控制寄存器和两个指针寄存器。

          80位数据寄存器

        

ST(0)
ST(1)
ST(2)
ST(3)
ST(4)
ST(5)
ST(6)
ST(7)

          48位指针寄存器:FPU指令指针和FPU数据指针

          16位控制寄存器:标识寄存器,控制寄存器和状态寄存器

    

  3 x86内存管理:

     x96处理器按照32位x86处理器的操作模式来管理内存。

    实地址模式中

      只能访问1MB内存,地址从00000H到FFFFFH,处理器一次只能运行一个程序。但是可以采用中断来处理外围设备的请求。应用程序被允许可以访问内存的任何地址。Windows95和98可以引导进入这种模式

    保护模式中

      处理器可以同时运行多个程序,每个进程分配总共的4GB内存。每个进行有自己的运行空间,禁止访问其他进程地址。

    虚拟8086中

      在保护模式下创建一个带有1MB地址空间的虚拟8086机器来模拟运行实地址模式的80x86计算机。