简单介绍Intel IA32 PC架构
Intel使用IA32来代表Pentium处理器族,以区别64bit的架构。
1.模式
IA32处理器有三种操作模式
实模式:当PC上电或复位时,处理器处于这种模式,此时可以使用一条简单的指令转换到保护模式
保护模式:对于现代操作系统来说,这是一种首选的模式,该模式支持虚拟内存寻址以及支持多程序环境和保护机制。
系统管理模式:
也有一种叫虚拟8086模式,该模式用于在保护的,多任务环境下允许处理器执行8086的代码软件。
2.寄存器集
有三种类型的寄存器:通用数据寄存器,段寄存器以及状态和控制寄存器,如下图所示,
8个通用数据寄存器(General-Purpose registers)
6个段寄存器(Segments registers),用来保存16bit的段选择子,
EFLAGS寄存器:32bit的寄存器包含一组状态标志,控制标志和系统标志,下图显示了EFLAGS寄存器中各bit位的功能。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EIP寄存器(指令指针):
3.寻址
1)Bit和Byte顺序:IA32处理器使用“小端”作为其字节顺序,
2)数据类型:IA提供4种数据类型:abyte(8 bits), a word(16 bits), a double-word(32 bits), aquad-word(64 bits),
注:在GUN汇编器中,一个字表示“word”,双字等同于“long”。
3)内存寻址:两种方式,统一内存模式和分段内存模式。
- 在统一内存模式下,内存对于一个程序来说,是一个单一的,连续的地址空间,称为线性地址空间。代码,数据和程序堆栈都包含在该地址空间中,该线性地址空间是字节可寻址的,因此,内存空间大小为:0to 232 – 1 。
- 在分段内存模式下,内存对于一个程序来说,是一组分段的地址空间称为段,当使用这种模式时,代码,数据,堆栈被包含在各自的段中,为了在一个段中寻址一byte,程序必须使用逻辑寻址,该寻址方式包括段选择子和一偏移offset。段选择子表示需要进入的段,offset指示该段中的一byte的地址空间。
4.处理器复位
冷启动或热启动都可以复位CPU,冷启动就是系统上电,而热启动就是表示当同时按下CTRL-ALT-DEL键时,键盘BIOS将设置一特殊的标志,然后重启CPU。
当复位后,处理器进入实模式,且禁止了中断操作,关键的寄存器设置为可知的状态。例如,EFLAGS寄存器为00000002H,而内存不变,因此,当冷启动时,内存中包含很多垃圾信息。CPU跳到BIOS(Basicinput output services)来从disk中加载bootstraploader程序,然后开始执行loader。BIOS加载bootstraploader到固定的地址0:7C00,然后跳到此开始地址。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|