曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4734|回复: 0
打印 上一主题 下一主题

IA-32 上的寄存器

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2009-11-22 01:07:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IA-32 平台具有不同长度的多组寄存器,而不同的处理器则会包含专属于自己的寄存器,但所有的处理器都可以使用的寄存器的核心组如下表所示:
寄存器
描述
通用
8个32位寄存器,用于存储正在处理的数据

6个16位寄存器,用于处理内存访问
指令指针
单一的32位寄存器,指向要执行的下一条指令码
浮点数据
8个80位寄存器,用于浮点数学数据
控制
5个32位寄存器,用于确定处理器的操作模式
调试


1、通用寄存器
通用寄存器及经常被用于的目的:
寄存器
描述
EAX
用于操作数和结果数据的累加器
EBX
指向数据内存段中的数据的指针
ECX
字符串喝循环操作的计数器
EDX
I/O 指针
EDI
用于字符串操作的目标的数据指针
ESI
用于字符串操作的源的数据指针
ESP
堆栈指针
EBP
堆栈数据指针

32 位的 EAX, EBX, ECX, 和 EDX 寄存器也可用通过 16 位和 8位名称引用,以表示寄存器的旧式版本。如通过使用 AX 引用,那么 EAX 寄存器的低 16 位被使用;而通过使用 AL 引用,则 EAX 的低 8 位被使用。如下图所示:


2、段寄存器
段寄存器专门用于引用内存位置。IA-32 处理器平台允许 3 种不同的访问系统内存的方法:
      平坦内存模式
      分段内存模式
      实地址模式
平坦内存模式把全部系统内存表示为连续的地址空间。所有指令、数据和堆栈都包含在相同的地址空间中。通过成为线性地址(linear address)的特定地址访问每个内存位置。

分段内存模式把系统内存划分为独立段的组,通过位于段寄存器种的指针进行引用。每个段用于包含特定类型的数据。一个段用于包含指令码,另一个段用于包含数据元素,第三个段用于包含程序堆栈。段中的内存位置是通过逻辑地址定义的。逻辑地址由段地址和偏移地址构成。处理器把逻辑地址转换为相应的先行地址位置以便访问内存的字节。段寄存器用于包含特定数据访问的段地址,如下表所示:
段寄存器
描述
CS
代码段
DS
数据段
SS
堆栈段
ES
附加段指针
FS
附加段指针
GS
附加段指针
每个段寄存器都是 16 位的,包含指向内存特定段的起始位置的指针。CS 寄存器包含指向内存中代码段的指针。代码段是内存中存储指令码的位置。处理器按照 CS 寄存器的值和 EIP 指令指针寄存器种包含的偏移值从内存获得指令码。程序不能显式地加载或者改变 CS 寄存器。当程序被分配给一个内存空间时,处理器将为 CS 寄存器赋值。

DS、ES、FS 和 GS 段处理器都用于指向数据段。通过使用 4 个独立的数据段,程序可以分隔数据元素,确保它们不会重叠。程序必须加载带有段的正确指针值的数据段寄存器,并且使用偏移值引用各个内存位置。

SS 段寄存器用于指向堆栈段。堆栈包含传递给程序中的函数和过程的数据值。

如果程序使用实地址模式,那么所有段寄存器都指向零线性地址,并且都不会被程序改动。所有指令码、数据元素和堆栈元素都是通过它们的线性地址直接访问的。

3、指令指针寄存器
指令指针寄存器 ( EIP 寄存器 ),有时也称为程序计数器 ( program counter ) ,它跟踪要执行的下一条指令码。

应用程序不能直接修改指令指针的本身,不能指定内存地址并且把它放到 EIP 寄存器中。相反,必须使用一般的程序控制指令 ( 比如跳转 ) 来改变要读入到预取缓存的下一条指令。

在平坦内存模式中,指令指针包含下一条指令码的内存位置的线性地址。如果应用程序使用分段内存模式,那么指令指针指向逻辑内存地址,通过 CS 寄存器的内容引用。

4、控制寄存器
5 个控制机存期用于确定处理器的操作模式,还有当前正在执行的任务的特性,如下表所示:
控制寄存器
描述
CR0
控制操作模式和处理器状态的系统标志
CR1
当前没有使用
CR2
内存页面错误信息
CR3
内存页面目录信息
CR4
支持处理器特性和说明处理器特性能力的标志

不能直接访问控制寄存器中的值,但是可以把控制寄存器种包含的数据传送给通用寄存器。数据被传送给通用寄存器后,应用程序就可以查看寄存器种的标志位以便确定处理器和/或当前正在运行的任务的操作状态。

如果必须改动控制寄存器的标志值,可以改动通用寄存器种的数据,然后再把内容传给控制寄存器。一般用户程序不经常修改控制寄存器项目,但系统程员序会经常修改控制寄存器中的值。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-15 16:40 , Processed in 0.060651 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表