X86

您所在的位置:网站首页 x86寄存器有多少个 X86

X86

2024-07-13 15:26| 来源: 网络整理| 查看: 265

目录

1.寄存器的分类

2.x86_32的寄存器

2.0总览

2.1 通用寄存器(共8个)

2.2段寄存器

2.2.1背景知识

2.2.2段寄存器的应用

2.3指令指针寄存器eip

2.4控制寄存器

2.5调试寄存器

2.6其他寄存器

3.X86-64的寄存器

1.寄存器的分类

2.x86_32的寄存器 2.0总览

2.1 通用寄存器(共8个) 通用寄存器用于临时存储数据. 大多数通用寄存器都可以用于存储任何类型的数据, 但是其中一些具有专门的用途, 它们在汇编语言中以一致的方式使用,下表列出了x86_32平台上的通用寄存器和它们最常用于何种目的:

2.2段寄存器

2.2.1背景知识 段寄存器专门用于引用内存位置,x86_32平台允许3种不同的内存访问方式: (1)平坦内存模式 此模式将全部系统内存表示为连续的地址空间.所有指令、数据和堆栈都包含在相同的地址空间中.通过 称为线性地址(linear address)的特定地址访问每个内存位置. (2)分段内存模式 此模式把系统内存划分为独立段的组,通过位于段寄存器中的指针进行引用,每个段用于包含特定类型的 数据.通常,一个段用于包含指令码,另一个段用于包含数据元素,第三个段用于包含程序堆栈. 段中的内存位置是通过逻辑地址定义的,逻辑地址由段地址和偏移地址构成,处理器把逻辑地址转换为相 应的线性地址位置以便访问内存单元. (3)实地址模式 此模式下,所有段寄存器都都指向零线性地址,并且都不会被程序改动;所有指令码、数据元素和堆栈元 素都是通过它们的线性地址直接访问的。 2.2.2段寄存器的应用 每个段寄存器都是16位的,包含指向内存特定段的起始位置的指针.cs寄存器包含指向内存中代码段的指针, 代码段是内存中存储指令码的位置。处理器按照cs寄存器的值和eip指令指针寄存器中包含的偏移值从内存中获 得指令码.程序不能显示的加载或者改变cs寄存器中的内容.当程序被分配一个内存空间时,处理器将为cs寄存器 赋值. ds/es/fs和gs段寄存器都用于指向数据段,通过使用4个独立的数据段,程序可以分隔数据元素,确保它 们不会重叠.程序必须加载带有段的正确指针值的数据段寄存器,并且使用偏移值引用各个内存位置. ss段寄存器用于指向堆栈段,堆栈包含传递给程序中的函数和过程的数据值. 段寄存器用于包含特定数据访问的段地址,下表为X86-32下可用的段寄存器及其用途,

2.3指令指针寄存器eip 指令指针寄存器(即eip寄存器),或称为程序计数器(program counter),它跟踪要执行的下一条指令码。 应用程序不能直接修改指令指针本身,不能指定内存地址并且把它送入eip寄存器中,相反,必须使用一般的程 序控制指令(比如跳转)来改变它的内容。 在平坦内存模式中,指令指针包含一条指令码的内存位置的线性地址,如果应用程序使用分段内存模式, 那么指令指针指向内在地址,并通过cs寄存器的内容进行引用。 2.4控制寄存器 5个控制寄存器用于确定处理器的操作模式,还有当前正在执行的任务的特性,如下表:

2.5调试寄存器 DR0 DR1 DR2 DR3 DR4 DR5 DR6 DR7 2.6其他寄存器

此处不做叙述,具体可参照书籍《汇编语言简明教程》,链接微信读书的链接

3.X86-64的寄存器

继续去看书吧,具体可参照书籍《汇编语言简明教程》,链接微信读书的链接

一篇很好的文章



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3