IntelX86CPU系列的寄存器
- 格式:ppt
- 大小:904.50 KB
- 文档页数:15
汇编语言基于x86处理器
汇编语言是一种低级编程语言,用于与计算机硬件直接交互。
基于x86处理器的汇编语言主要用于编写针对x86架构的计算机程序。
x86处理器是一种广泛使用的处理器架构,包括Intel和AMD 等厂商生产的多个处理器系列。
在x86汇编语言中,程序员使用特定的指令集来操作寄存器、内存和其他硬件设备,实现计算机指令的精确控制和数据处理。
以下是一些基于x86处理器的汇编语言的特点和要点:
寄存器:x86处理器提供了多个通用寄存器,如AX、BX、CX、DX等,以及专用寄存器如指令指针寄存器IP、堆栈指针寄存器SP等。
程序员可以使用这些寄存器来存储数据、进行计算和操作。
指令集:x86汇编语言提供了广泛的指令集,包括数据传输、算术运算、逻辑运算、条件分支、循环控制等。
程序员可以使用这些指令来实现各种操作和算法。
内存访问:x86汇编语言可以直接访问内存,读取和写入数据。
程序员需要了解内存地址和数据类型的操作方式,以正确地操作内存中的数据。
栈操作:x86汇编语言中的栈用于存储局部变量、函数调用和
返回地址等信息。
程序员可以使用栈指针寄存器来管理栈,并使用相关指令进行入栈和出栈操作。
中断处理:x86处理器支持中断和异常处理机制。
程序员可以编写中断处理程序,以响应硬件中断或软件触发的异常情况。
编写基于x86处理器的汇编语言程序需要对x86架构的指令集和寄存器使用有深入的理解,以及对计算机硬件和操作系统的了解。
熟练掌握汇编语言的编写技巧和调试工具对于开发和调优x86汇编语言程序非常重要。
Pentium微处理器的内部寄存器Pentium是Intel公司于1993年3月推出的第五代80X86系列微处理器,简称P5或80586,中文译名为“奔腾”。
与其前辈80X86微处理器相比,Pentium采用了全新的设计,它有64位数据线和32位地址线,但依然保持了与其前辈80X86的兼容性,在相同的工作方式上可以执行所有的80X86程序。
Pentium的内部结构如图2.4所示。
它主要由执行单元、指令Cache、数据Cache、指令预取单元、指令译码单元、地址转换与管理单元、总线单元以及控制器等部件组成。
其中核心是执行单元(又叫运算器),它的任务是高速完成各种算术和逻辑运算,其内部包括两个整数算术逻辑运算单元(ALU)和一个浮点运算器,分别用来执行整数和实数的各种运算。
为了提高效率,它们都集成了几十个数据寄存器用来临时存放一些中间结果。
这些功能部件除地址转换和管理单元与80386/80486保持兼容外,其他都进行了重新设计。
1) 超标量体系结构和指令流水线Pentium由“U”和“V”两条指令流水线构成超标量流水线结构,其中每条流水线都有自己的ALU、地址生成逻辑和Cache接口。
这种双流水线技术可以使两条指令在不同流水线中并行执行。
图2.4 Pentium微处理器的内部结构每条流水线又分为指令预取PF、指令译码(一次译码)D1、地址生成(二次译码)D2、指令执行EX和回写WB共5个步骤。
图2.5给出了Pentium的指令流水线操作示意。
图2.5 Pentium指令流水线操作示意图当第一条指令完成指令预取,进入第二个操作步骤D1,执行指令译码操作时,流水线就可以开始预取第二条指令;当第一条指令进入第三个步骤D2,执行地址生成时,第二条指令进入第二个步骤D1,开始指令译码,流水线又开始预取第三条指令;当第一条指令进入第四个步骤EX,执行指令规定的操作时,第二条指令进入第三个步骤D2,执行地址生成,第三条指令进入第二个步骤D1,开始指令译码,流水线又开始预取第四条指令;当第一条指令进入第五个步骤WB,执行回写操作时,第二条指令进入第四个步骤EX,执行指令规定的操作,第三条指令进入第三个步骤D2,执行地址生成,第四条指令进入第二个步骤D1,开始指令译码,流水线又开始预取第五条指令。
X86机的原理构造及技术详解X86架构是计算机体系结构的一种,广泛应用于个人电脑和服务器领域。
它包含了一系列的指令集和硬件设计,为计算机的运行提供了基本框架。
下面将详细解析X86机的原理构造及技术。
1.指令集:X86的指令集是其最重要的特征之一、它包括基本的算术运算、逻辑运算、数据传输等指令,并提供了各种操作数的寻址方式。
X86提供了多种寻址方式,例如寄存器寻址、立即数寻址、直接寻址、间接寻址等。
这些指令和寻址方式的组合可以满足各种计算需求。
2.处理器架构:X86处理器架构通常由运算单元、控制单元、寄存器、数据通路、总线等组成。
运算单元负责执行指令中的算术和逻辑运算,控制单元负责指令的解码和控制流程的管理,寄存器用于存储数据和地址,数据通路用于连接各个功能模块,总线用于传输数据和控制信号。
3.寄存器:X86处理器拥有多个寄存器,包括通用寄存器、控制寄存器、段寄存器等。
通用寄存器用于存储一般性数据,控制寄存器用于存储控制信息,段寄存器用于存储段选择子,以实现分段机制。
通用寄存器的个数和位数因处理器型号不同而有所差异。
4.数据通路:X86处理器的数据通路通常包括运算器、存储器和数据寄存器。
运算器用于执行算术和逻辑运算,存储器用于存储指令和数据,数据寄存器用于暂存数据。
数据通路可以根据指令中的操作数和寻址方式进行数据的读取和写入。
5.缓存:X86处理器通常会配置多级缓存,以提高数据访问速度。
缓存分为指令缓存和数据缓存,它们分别用于存储指令和数据,减少访问主存的时间。
缓存的大小和结构会因处理器型号而有所不同,更高级别的缓存一般会更大,但也更贵和更慢。
6.执行流程:X86处理器的执行流程通常包括取指令、解码、执行、访存和写回等阶段。
取指令阶段从存储器中获取指令,解码阶段将指令转换为可执行的微操作序列,执行阶段根据微操作序列执行计算和数据操作,访存阶段读取或写入数据,写回阶段将结果写回到相应的寄存器或存储器。
x86是多少位x86,亦称为x86架构或x86体系结构,是一种32位和64位微处理器架构。
它是Intel于1978年首次引入的一种基于CISC (Complex Instruction Set Computer,复杂指令集计算机)的处理器架构。
自那时以来,x86架构已经成为市场上最为广泛使用的计算机架构之一。
x86架构的第一个处理器是Intel 8086,它是一款16位处理器。
然而,由于对内存限制的需求以及市场的发展,Intel随后推出了Intel 80286(i286)处理器,后者是一款32位处理器,向后兼容8086指令集。
这是x86架构的第一个32位处理器,为今后的发展奠定了基础。
随着计算机技术的进步和市场需求的推动,x86架构建立了其领导地位。
Intel在后续的产品中引入了更先进的处理器,如80386(i386),80486(i486)和Pentium系列,将x86架构推向新的高度。
这些处理器通过增加处理器位宽度并改进指令集来提高计算能力和效率。
虽然32位x86架构在市场上非常成功,但随着技术的进步,对更高计算能力和内存访问的需求也越来越迫切。
为了应对这一需求,x86架构进一步演变为64位架构。
Intel在2003年推出了第一款x86 64位处理器,称为Intel Itanium。
紧接着,Intel又发布了x86架构的64位版本,称为Intel EM64T。
AMD还引入了自己的64位架构,称为AMD64或x86-64。
这些64位处理器不仅可以兼容运行32位操作系统和应用程序,还可以运行64位操作系统和应用程序,提供更高的内存寻址能力。
x86架构的位数指的是处理器的寻址能力和寄存器的位宽度。
在32位x86架构中,处理器能够寻址32位内存地址,这意味着它最多可以寻址2^32(大约4GB)的内存。
而在64位x86架构中,处理器能够寻址64位内存地址,最多可以寻址2^64(约16EB)的内存,实现了更高的内存寻址能力。
X86架构的寄存器
在调试过程中,如果要看寄存器的内容的话,需要使⽤到的寄存器还是需要熟悉⼀下的。
32位下的x86_32
2个变址寄存器:ESI、EDI
6个段寄存器:ES、CS、SS、DS、FS、GS
4个数据寄存器:EAX、EBX、ECX、EDX
esp:寄存器存放当前线程的栈顶指针
ebp:寄存器存放当前线程的栈底指针
eip:指令寄存器,下⼀条指令的地址
4个传参使⽤到的寄存器,依次为:EDI、ESI、EDX、ECX。
EAX寄存器作函数返回值。
64位下的x64
64位下有16个寄存器:rax、rbx、rcx、rdx、esi、edi、rbp、rsp、r8、r9、r10、r11、r12、r13、r14、r15。
6个传参寄存器:依次为:rdi、rsi、rdx、rcx、r8、r9
其它
X86下,遵循被调⽤者使⽤规则,函数在调⽤⼦函数之前,保存相关寄存器的内容。
函数调⽤时,参数先⼊栈,接着为返回地址⼊栈,BP寄存器⼊栈、再接着就是⼦函数的局部变量之类的了。
x86设计手册x86 (也称为IA-32)是一种广泛使用的计算机指令集架构,许多个人计算机和服务器采用这一架构。
x86架构最早由英特尔公司在20世纪70年代开发,并于1981年首次公开发布。
x86架构的设计手册是一本重要的参考资料,使用简体中文编写的手册主要用于指导开发者理解和编写x86架构的程序。
手册详细介绍了x86架构的核心概念、指令集、寄存器、内存管理等关键内容。
首先,x86架构手册解释了指令集的组成和功能。
指令集是计算机硬件能够理解和执行的操作码,它包含了各种算术、逻辑和控制指令。
手册列出了所有的指令集,并提供每个指令的详细描述,包括操作数的格式、指令的功能以及指令的执行方式和效果。
其次,手册介绍了x86架构中的寄存器。
寄存器是一种小型的高速存储器,用于存储和操作计算机中的数据。
x86架构采用了多种不同类型的寄存器,如通用寄存器、段寄存器和控制寄存器。
手册详细描述了每个寄存器的作用和用法,以及如何在程序中使用这些寄存器来实现各种功能。
此外,x86架构手册还解释了内存管理的相关概念。
内存管理是计算机系统中非常重要的一部分,它涉及到内存的分配、访问和释放。
手册讨论了x86架构中的内存地址空间、内存保护和分段机制,并介绍了如何使用指令来读取和写入内存中的数据。
最后,x86设计手册还包含了大量的参考资料和示例代码,供开发者参考和学习。
这些资料包括x86架构的编程指导、程序调试技巧和性能优化建议等内容。
开发者可以通过研读这些资料,更好地理解和应用x86架构。
总体而言,x86设计手册是一本重要的参考资料,它为开发者提供了详尽的关于x86架构的知识。
无论是研究x86架构的原理,还是进行x86程序的开发和调试,这本手册都能够提供有价值的指导和支持。
随着计算机技术的不断发展,x86架构手册的更新版本也在不断发布,以适应新的硬件和软件环境。
综上所述,x86设计手册是一本重要的计算机技术书籍,对于理解和应用x86架构至关重要。
单⽚机或者cpu是多少位的,指的是地址总线还是数据总线(⽐如32位和64位的cpu)⼀般来说,CPU的位宽指的是数据总线的宽度。
这个你可以这么推想:CPU的地址总线宽度决定了寻址范围,数据总线决定了单次能取出的数据的长度。
决定CPU的性能的话,数据总线和地址总线谁更能决定这个性能呢?当然是数据总线嘛,你64位数据总线⼀次就能取出64bit的数据,8位数据总线的CPU⼀次只能取出8bit的数据,在相同频率的情况下,8位数据总线的CPU就得连续取8次数据,数据量才能和64位数据总线⼀次取出的数据量相同,是不是性能差8倍呢。
这⾥还不关⼼取到数据后处理数据的性能问题,但就说取数据的性能问题,就差8倍。
地址总线宽度不是直接影响到性能的参数。
给个例⼦:假如说有个36位地址总线宽度、32位数据总线宽度的A型号的CPU,假如还有个32位地址总线宽度、32位数据总线宽度的B型号的CPU。
你觉得这两个型号的CPU性能上能差到哪吗?只不过B型号的CPU地址超过了32位可能就不⾏能,也可能需要⽤其他的⽅式组合出更长位宽的地址来,总之不如A型号直接、⾼效。
但是,只要不是这样的情况,A和B的其他因素相同,你觉得A和B两个CPU的性能差到哪吗。
其实,intel的x86CPU就刚好有这样的情况,36位地址总线宽度、32位数据总线宽度,寄存器是32位的,你会想,那寄存器放不下36位的地址,那怎么办呢,其实它是⽤某种⽅法组合出来的36位地址,段地址32位向⾼位偏移4位后加上偏移地址,就出来36位的地址。
⼀般,寄存器的宽度和数据总线宽度是⼀致的,地址总线可以通过某种⽅式组合出来,所以可以不⼀致。
毕竟寄存器绝⼤部分时间是要存储和处理数据的,不是吗,地址作为数据使⽤的情况在整个程序运⾏中占的时间是很少数的。
另外,操作系统的位宽应该指的是编译时使⽤的是32位指令集还是64指令集(这⾥就只说x86体系的吧,IA32和IA64这个⽐较多,其他体系结构的我也不是很清楚。
第一章认识处理器中央处理器(CPU)在微机系统处于“领导核心”的地位。
汇编语言被编译成机器语言之后,将由处理器来执行。
那么,首先让我们来了解一下处理器的主要作用,这将帮助你更好地驾驭它。
典型的处理器的主要任务包括从内存中获取机器语言指令,译码,执行根据指令代码管理它自己的寄存器根据指令或自己的的需要修改内存的内容响应其他硬件的中断请求一般说来,处理器拥有对整个系统的所有总线的控制权。
对于Intel平台而言,处理器拥有对数据、内存和控制总线的控制权,根据指令控制整个计算机的运行。
在以后的章节中,我们还将讨论系统中同时存在多个处理器的情况。
处理器中有一些寄存器,这些寄存器可以保存特定长度的数据。
某些寄存器中保存的数据对于系统的运行有特殊的意义。
新的处理器往往拥有更多、具有更大字长的寄存器,提供更灵活的取指、寻址方式。
寄存器如前所述,处理器中有一些可以保存数据的地方被称作寄存器。
寄存器可以被装入数据,你也可以在不同的寄存器之间移动这些数据,或者做类似的事情。
基本上,像四则运算、位运算等这些计算操作,都主要是针对寄存器进行的。
首先让我来介绍一下80386上最常用的4个通用寄存器。
先瞧瞧下面的图形,试着理解一下:31 15 0|------------eax-------------||--ah---|---al--||------------|-------|-------|| | ax || | | ||------------|-------|-------|上图中,数字表示的是位。
我们可以看出,EAX是一个32-bit寄存器。
同时,它的低16-bit 又可以通过AX这个名字来访问;AX又被分为高、低8bit两部分,分别由AH和AL来表示。
对于EAX、AX、AH、AL的改变同时也会影响与被修改的那些寄存器的值。
从而事实上只存在一个32-bit的寄存器EAX,而它可以通过4种不同的途径访问。
也许通过名字能够更容易地理解这些寄存器之间的关系。
寄存器目录[隐藏]寄存器定义寄存器用途数据寄存器寄存器分类英文名称:Register[编辑本段]寄存器定义寄存器是中央处理器内的组成部份。
寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。
在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。
在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。
寄存器通常都是以他们可以保存的位元数量来估量,举例来说,一个“8 位元寄存器”或“32 位元寄存器”。
寄存器现在都以寄存器档案的方式来实作,但是他们也可能使用单独的正反器、高速的核心内存、薄膜内存以及在数种机器上的其他方式来实作出来。
寄存器通常都用来意指由一个指令之输出或输入可以直接索引到的暂存器群组。
更适当的是称他们为“架构寄存器”。
例如,x86 指令及定义八个 32 位元寄存器的集合,但一个实作x86 指令集的 CPU 可以包含比八个更多的寄存器。
寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。
[编辑本段]寄存器用途1.可将寄存器内的数据执行算术及逻辑运算;2.存于寄存器内的地址可用来指向内存的某个位置,即寻址;3.可以用来读写数据到电脑的周边设备。
[编辑本段]数据寄存器8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。
(1)通用寄存器有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个).数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.DH&DL=DX(data):数据寄存器,常用于数据传递。
InterX86系列处理器与ARM处理器对比摘要:自从1971年Intel诞生了第一个微处理器——4004开始,微处理器得到了飞速的发展,在这短短的四十年的时间里有很多家公司生产过无数种型号的微处理器,但是最终只有Iruer公司和ARM公司生存下来并发展成为世界最主要的两家微处理器生产厂商。
其主要原因在于其产品的优秀性能以及适应时代发展的能力。
本次研讨主要对比两家主要微处理器的性能进行对比。
一、主要型号的对比。
英特尔公司cpu主要型号:8086、8088、80286、80386、80486、Pentimuk 2、3、4 等。
ARM公司cpu主要型号:AMD8080. AMD8088-2-BQA、、AMDK5PR133ABQ. K6、K7、K8 等。
二、cup主频对比:英特尔X86系列主频:ARM公司cpu主频:通过以上对比,可发现英特尔X86系列微处理器相比于ARM公司生产的cpu在主频性能方面存在一定优势,但优势不是非常明显。
三、cpu能耗的对比通过网上查询和资料的搜索可知单位能耗的计算公式为:P dyn = (C L X P trans X V dd 2 X f clock ) + (t sc X V dd X I peak X f clock )其中其中CL指电路总负载电容,P trans指工作电路所占的比例, Vdd指工作电压,f clock指工作频率。
而tsc指PM0S和NM0S 同时打开的时间,在多数情况之下tsc的值较小,因此上述公式的后半段几乎可以忽略不计,因此P dyn 心(C L X P trans X V dd 2 X f clock) o那么经过数据的计算以及查询,我学习到从CL和P trans两个指标上分析,不难发现ARM在C L层面上做得更好,更简练的设计决定了ARM处理器的低功耗。
而在P trans层面上分析,x86更胜一筹,x86处理器在ACPI规范中定义了一系列处理器状态,远比ARM处理器定义的状态复杂。
x86汇编讲解摘要:1.x86 汇编简介2.x86 汇编的基本语法3.x86 汇编的寄存器和内存4.x86 汇编的指令集5.x86 汇编的应用场景正文:【x86 汇编简介】x86 汇编是一种用于编写计算机程序的低级编程语言。
它是x86 架构处理器的指令集体系结构(ISA) 的助记符表示形式。
x86 汇编语言可以用于编写操作系统、驱动程序和嵌入式系统等底层应用程序。
由于其底层特性,x86 汇编语言能够直接访问计算机硬件,并实现高性能的计算。
【x86 汇编的基本语法】x86 汇编语言的基本语法包括以下几个部分:1.指令:x86 汇编指令是用于完成特定任务的命令。
每个指令都有一个操作码,它表示指令要执行的操作。
操作码后面通常跟有一些操作数,用于指定操作的对象。
2.寄存器:x86 汇编中的寄存器是一组高速存储单元,用于存储数据和地址。
常用的寄存器包括通用寄存器(EAX、EBX、ECX、EDX)、指针寄存器(ESP、EBP)和索引寄存器(ESI、EDI)等。
3.内存:x86 汇编中的内存是指计算机中的主存储器,用于存储程序和数据。
内存地址通常用基址(Base Address)加偏移量(Displacement)的方式表示。
4.常用指令:x86 汇编中有很多常用指令,包括数据传输指令(如MOV)、算术指令(如ADD、SUB)、逻辑指令(如AND、OR)、跳转指令(如JMP、JZ、JNZ)等。
【x86 汇编的寄存器和内存】x86 汇编中的寄存器和内存扮演着非常重要的角色。
它们可以存储程序中的数据和地址,并在程序运行过程中进行高速读写。
以下是一些常用的寄存器和内存操作指令:1.寄存器指令:MOV 寄存器,数值将数值移动到指定的寄存器中。
2.内存指令:MOV 内存地址,寄存器将寄存器的值移动到指定的内存地址。
3.加载/存储指令:LOAD/STORE 寄存器,内存地址在内存和寄存器之间传输数据。
【x86 汇编的指令集】x86 汇编指令集非常丰富,可以完成各种复杂的操作。
X86架构基础知识介绍X86架构是一种广泛应用于个人计算机和服务器的指令集架构。
它最初由英特尔公司于1978年推出,并成为个人计算机的主要架构之一、随着时间的推移,X86架构不断发展和演进,目前主要由英特尔和AMD等公司推动。
X86架构支持多种数据类型,包括整数、浮点数和向量数据等。
整数操作可处理不同大小的整数,如8位、16位、32位和64位。
浮点数操作支持单精度和双精度浮点数,以及一些高级浮点操作,如开根号和三角函数等。
向量数据操作允许同时处理多个数据,以提高计算效率。
X86架构采用一种被称为寄存器的特殊存储器件来存储和处理数据。
寄存器是内置在处理器中的高速存储器,可暂时存储和操作数据。
X86架构有多个通用寄存器和特殊寄存器,每个寄存器都有特定的用途和功能。
通用寄存器用于常规数据操作,如存储变量和计算中间结果等。
特殊寄存器用于保存程序状态和控制处理器行为。
X86架构还支持存储器层次结构,其中数据可以在不同层次的存储器之间移动。
处理器内部有多级高速缓存存储器,用于暂时存储数据和指令,以提高访问速度。
此外,X86架构还支持外部存储器,如随机存取存储器(RAM)和硬盘驱动器等,用于长期存储和备份数据。
X86架构的软件生态系统非常丰富,有大量的操作系统、开发工具和应用程序可供选择。
常见的操作系统包括Windows、Linux和macOS等,它们都提供对X86架构的良好支持。
开发工具包括编译器、调试器和性能分析工具等,开发者可以使用这些工具来创建和优化X86架构的软件。
应用程序涵盖了各个领域,包括办公软件、娱乐软件和科学计算等。
近年来,X86架构在能效和性能方面取得了很大进步。
先进的制造工艺和设计技术使得处理器能够提供更高的性能,并在较低的功耗下工作。
同时,X86架构还提供了一些高级功能,如虚拟化和安全保护等,以满足不同应用场景的需求。
总之,X86架构是一种广泛应用于个人计算机和服务器的指令集架构,它提供了一组丰富的指令集和寄存器,支持多种数据类型和存储器层次结构。
计算机系统中各种寄存器计算机系统中的各种寄存器在计算机系统中,寄存器是一种非常重要的组成部分。
它们存储了计算机中的各种数据和指令,使得计算机能够高效地运行各种程序。
在这篇文章中,我们将会探讨计算机系统中的各种寄存器以及它们的作用。
通用寄存器通用寄存器是计算机系统中最常见的寄存器之一。
它们通常用于存储处理器中的操作数和结果,可以用于各种算术和逻辑操作。
在x86架构的处理器中,有8个通用寄存器,分别是EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP。
其中,EAX寄存器通常用于存储函数的返回值,EBX寄存器通常用于存储内存地址,ECX和EDX寄存器常用于存储循环计数器等。
标志寄存器标志寄存器是存储处理器状态信息的寄存器。
在x86架构的处理器中,标志寄存器由32位组成,其中包括了各种处理器标志,例如零标志(ZF)、进位标志(CF)和溢出标志(OF),以及其他一些控制标志。
标志寄存器通常会在各种算术和逻辑操作中被修改,从而告知程序接下来要执行的操作指令。
节拍寄存器节拍寄存器是某些计算机体系结构中的一种寄存器,用于对计算机的时钟速度进行控制。
节拍寄存器的值通常表示处理器时钟的周期数,可以被用来计算程序执行时间。
不同计算机体系结构中的节拍寄存器可以有不同的名字和特性,例如在早期的8088处理器中,节拍寄存器是由分频器产生,用于控制外部设备的操作。
控制寄存器控制寄存器是控制处理器行为的寄存器,用于管理内存保护、中断控制和处理器超级权限等。
在某些处理器中,控制寄存器还可以用于设置虚拟内存并指定程序代码和数据的位置。
在x86架构的处理器中,控制寄存器包括CR0、CR1、CR2、CR3和CR4。
其中,CR0寄存器用于指定处理器的一些基本行为,例如内存保护和分页模式设置。
状态寄存器状态寄存器是计算机体系结构中的一种寄存器,用于存储处理器的执行状态。
状态寄存器通常包括条件代码、中断屏蔽位和特权级。
在某些计算机体系结构中,状态寄存器还可以用于保存程序执行的地址和数据,以及处理器的一些内部状态信息。
80X86寄存器详解引子打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识,自然,还是得从最基础的开始,那就从汇编语言开刀吧,从汇编语言开刀的话,我们必须还先要了解一些其他东西,像CPU ,内存这些知识点还是理解深刻一点的比较好,所以这一篇博文就绕着80x86 CPU 中寄存器的基础部分下手,至于其他的一些将会在后续的博文中介绍。
同时在这里说明一下,本篇博文介绍的算是比较详细的了,而且介绍的知识点也是比较多的,所以造成博文长度过长,如果有兴趣想了解这一块的话,还请自行斟酌好阅读比例,建议分3 次以上阅览。
读者定位本博文主要将介绍的是8086 CPU 中的寄存器,既然是8086 CPU 寄存器简介的话,自然,面向的是初级一些的读者,其中不会涉及太多难点,同时,所有的介绍,我也会尽可能的从基础开始,然后循序渐进的介绍,同时也会尽量的将知识点介绍详细,介绍的过程中也会涉及到一些汇编程序代码,当然,采用的是最简单的方式介绍而已,本篇博文也就是回顾一些基础知识,读者主要定位于想对8086 CPU 有所了解,希望对整个程序设计的底层有所了解的朋友,而且读者最好是拥有一定的计算机基础和汇编语言基础。
开头首先浅要介绍一下Intel CPU 的发展史吧:Intel CPU 系列,最初是4 位微处理器4004,然后到到8 位微处理器的8008 ,再到8 微微处理器8080,以及稍后的16 位微处理器8086,由8086 开始,Intel 进入现在所谓的x86 时代。
Intel 8086 为16 位CPU ,而因为在8086 之前的CPU 都是8 位CPU,这样也就造成了很多的外设也只支持8 位,因此Intel 紧接着就退出了8 位的8088 CPU,因此Intel 8088 也就可以看做是8086 的8 位版本;如果是但从汇编语言的角度上来说,8086 和8088 是没有区别的,即8086 上跑的程序可以不加修改的移植到8088 ,8088 上跑的程序也可以不加修改的移植到8086 上,当然,还是有些特殊的地方是不同的,而这些基本上在这里可以忽略掉,在8088 CPU 之后,Intel 又推出了80186 ,80286 ,这两款CPU 均是16 位CPU ,而对于80186 来说,其与8086 的区别可以简单的看做是80186 多了几条指令而已,而80286 则不同,80286 的地址总线数目有了变化,在8086 , 8088 , 80186 上,CPU 的地址总线都是20 根,即可最大寻址220 即达到1MB 的寻址能力,而对于80286 CPU 来说,其地址总线数目达到了24 根,从而最大寻址能力为224即16MB,由于支持更多的物理内存寻址,因此80286 便开始成为了多任务,多用户系统的核心。
x86中内存管理寄存器收藏一、内存管理寄存器处理器提供了4个内存管理寄存器(GDTR、LDTR、IDTR和TR),用于指定内存分段管理所用系统表的基地址,如图4-2所示。
处理器为这些寄存器的加载和保存提供了特定的指令。
有关系统表的作用请参见4.2节"保护模式内存管理"中的详细说明。
(点击查看大图)图4-2 内存管理寄存器GDTR、LDTR、IDTR和TR都是段基址寄存器,这些段中含有分段机制的重要信息表。
GDTR、IDTR和LDTR用于寻址存放描述符表的段。
TR用于寻址一个特殊的任务状态段(Task State Segment,TSS)。
TSS中包含着当前执行任务的重要信息。
(1)全局描述符表寄存器GDTRGDTR寄存器中用于存放全局描述符表GDT的32位的线性基地址和16位的表限长值。
基地址指定GDT表中字节0在线性地址空间中的地址,表长度指明GDT表的字节长度值。
指令LGDT和SGDT分别用于加载和保存GDTR寄存器的内容。
在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。
在保护模式初始化过程中必须给GDTR加载一个新值。
(2)中断描述符表寄存器IDTR与GDTR的作用类似,IDTR寄存器用于存放中断描述符表IDT的32位线性基地址和16位表长度值。
指令LIDT和SIDT分别用于加载和保存IDTR寄存器的内容。
在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。
(3)局部描述符表寄存器LDTRLDTR寄存器中用于存放局部描述符表LDT的32位线性基地址、16位段限长和描述符属性值。
指令LLDT和SLDT分别用于加载和保存LDTR寄存器的段描述符部分。
包含LDT表的段必须在GDT表中有一个段描述符项。
当使用LLDT指令把含有LDT表段的选择符加载进LDTR时,LDT段描述符的段基地址、段限长度以及描述符属性会被自动地加载到LDTR中。