从CPU的角度来看,程序不过是一组指令并按编译时生成的顺序执行。执行的过程中会从内存中取值并在寄存器中操作,以得到期望的结果。此外还有一些特殊的寄存器对CPU的状态和行为进行控制。下面介绍一下x86架构的基本运行环境。
三种基本模式
实际上x86有4种运行模式:实模式、保护模式、SMM模式和虚拟8086模式。除SMM模式外,其他三种模式常见于各种教科书,对理解x86CPU工作极为重要,在此也对他们进行简要介绍。
实模式:当CPU加电并经历最初的混沌状态后首先进入的就是实模式,它是早期Intel8086 处理器的工作模式。在该模式下,逻辑地址转换后即为物理地址,CPU可以访问1MB的物理地址空间(1MB+64KB)。操作系统或者BIOS通常在该模式下准备必要的数据结构和初始化关键的寄存器,然后切入保护模式。
保护模式:操作系统运行最常用的模式。在该模式下,CPU的所有功能几乎都能得到使用,可以访问架构允许的所有物理地址空间。本章的讲解,如无特殊说明,都是基于保护模式进行的。
虚拟8086模式:为了使早期的8086程序能在保护模式下运行,x86提供了虚拟8086模式。该模式可以让CPU在保护模式下为8086程序虚拟实模式的运行环境,使这些程序在执行时无须真正的从保护模式切换到实模式。
基本寄存器组
寄存器是软件操作CPU的最基本部件,X86架构的寄存器可以粗略的分为以下几类。
1通用寄存器:共有8个32位的寄存器,例如常见的EAX、EDX等,用来保存程序运行时的临时变量、栈指针等数据。
2、内存管理寄存器:包括段寄存器和描述符表寄存器。
3、EFLAGS寄存器:32位的寄存器,用来保存程序运行中的一些标志信息&#x