理论教育 编译器设计之路:IA-32体系结构的目标机结构解析

编译器设计之路:IA-32体系结构的目标机结构解析

时间:2023-11-04 理论教育 版权反馈
【摘要】:正如人们所知的,代码生成是一种与目标机密切相关的技术,因此,笔者有必要对目标机结构作简单介绍。通常,IA-32体系结构指的就是从Intel 386到最新的32位奔腾4处理器,是Intel经典的32位机系统。2.基本寄存器在i386系统中,通常提供了8个通用寄存器、6个段寄存器、1个标志寄存器和1个指令指针。在实际目标机中,除了用作数据存储之外,有时,通用寄存器还有一些特殊的功能与应用限制,这是编译器设计者需要考虑的因素。

编译器设计之路:IA-32体系结构的目标机结构解析

正如人们所知的,代码生成是一种与目标机密切相关的技术,因此,笔者有必要对目标机结构作简单介绍。通常,IA-32体系结构指的就是从Intel 386到最新的32位奔腾4处理器,是Intel经典的32位机系统。从程序员及编译器设计者的角度来看,除了性能的提高及引进了一套用于提升多媒体处理的高性能指令集之外,IA-32的体系与最初的Intel 386仍然是一脉相承的。

1.操作模式

i386处理器有三种基本操作模式:保护模式、实模式、系统管理模式。而虚拟8086模式可以视作是保护模式下的一种特例。

保护模式(protected mode)是处理器的主要状态,尤其是处于操作系统托管之下的应用程序。在保护模式下,用户程序被赋予了独立的内存区域(称为“段”),试图访问该区域之外的存储单元将被视为非法的。在这种情况下,用户程序试图访问绝对物理地址或硬件接口是很难的。

虚拟8086模式(virtual-8086 mode)是为了解决在保护模式下兼容实模式程序而设计的一种处理方案。早期的程序大多数都是实模式的,为了这些程序同样可以运行在保护模式之下,设计者提供了一个虚拟8086模式。严格地说,它并不是一个独立的模式。

实模式(real-address mode)也称为“实地址模式”,允许用户程序直接访问与控制存储器或硬件设备。同时,在实模式情况下,允许程序员进行模式切换等特殊应用。Intel处理器都是从实模式引导的。不过,此后大多数操作系统会将其切换到保护模式。Windows 98是支持实模式的,而之后的Windows操作系统都不支持了,即使是运行所谓的“MS-DOS”,也只是虚拟8086模式而一。从操作系统设计角度而言,实模式是不安全的,而且难以监控。

系统管理模式(system management mode)也称为“系统管控模式”,是提供给操作系统用以实现电源管理及系统安全等功能的机制。通常,自定义系统启动过程等特殊应用可能会涉及该模式。

一般来说,编译器设计者及程序员需要考虑的就是保护模式下的程序设计,实模式的应用涉及较少。

2.基本寄存器

在i386系统中,通常提供了8个通用寄存器、6个段寄存器、1个标志寄存器(EFLAGS)和1个指令指针(EIP)。

通用寄存器:主要用于进行运算和数据传递。在实际目标机中,除了用作数据存储之外,有时,通用寄存器还有一些特殊的功能与应用限制,这是编译器设计者需要考虑的因素。

段寄存器:主要用于存储段,如代码段、数据段、栈段等。在保护模式下,段寄存器的处理是由操作系统完成的,通常不需要程序员考虑。

标志寄存器:存储控制CPU操作或反映CPU状态的独立二进制位。(www.daowen.com)

指令指针:用于标识下一条待执行指令的地址。任意改变该寄存器的值,可能导致程序执行的异常,因此,这个寄存器的值通常是受控访问的。

下面,笔者重点介绍8个32位通用寄存器。它们分别是eax、ebx、ecx、edx、ebp、esp、edi、esi。其中,eax、ebx、ecx、edx都可以进行8位、16位、32位寻址。而ebp、esp、edi、esi只可以进行16位、32位寻址,不过,它们的16位寻址仅限于实模式下。

以eax为例,其低16位称为ax,ax的高8位称为ah,低8位称为al。而eax的高16位是不可以独立寻址的。这种交织的关系同样适用于ebx、ecx、edx。如图9-1所示。

最后,再来谈谈通用寄存器的一些特殊应用场合。

978-7-111-32164-4-Chapter09-6.jpg

图9-1 通用寄存器寻址示例

(1)在乘法和除法指令中,eax、edx被自动应用,赋予了特定的作用。

(2)在字符串处理、循环处理等场合中,ecx作为循环计数器使用。

(3)esp是寻址堆栈的栈顶指针寄存器,通常不能另作他用。

(4)在字符串块数据传输时,esi、edi通常作为源和目标块的指针寄存器。

(5)在程序设计中,ebp经常用于处理函数参数和局部变量的寻址。关于ebp的应用,第8章中己作了详细阐述。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈