不同架构的CPU寄存器是不一样的,即使是同一架构,不同型号的CPU也有差别。这里以80386的CPU为例,寄存器分为6类。其中可供应用程序员使用的为通用寄存器携碰(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)、段寄存器(CS、DS、SS、ES、FS、GS)和标志和控制寄存器(EIP、EFLAGS)。
可以指定任何通用寄存器的内容作为 *** 作数的地址,以及在形成地址的过程中作如加法或减法这样简单的算术运算。但像串的运算和双精度的乘法和除法 *** 作这类较复杂的 *** 作,必须要从固定的寄存器中取一个或多个 *** 作数。
寄存器的特点:
在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。
CPU中至少要有六类寄存器:指令寄存器(IR)、程序计数察隐拦器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)败胡、程序状态字寄存器(PSW)。这些寄存器用来暂存一个计算机字,其数目可以根据需要进行扩充。
以上内容参考:
百度百科-内存资料寄存器
1. 数据寄存器数据寄存器(Data Register,DR)又称数据缓冲寄存器,其主要功能是作为CPU和主存、外设之间信息传输的中转站,用以弥补CPU和主存、外设之间 *** 作速度上的差异。
数据寄存器用来暂时存放由主存储器读出的一条指令或一个数据字;反之,当向主存存入一条指令或一个数据字时,也将它们暂时存放高迅在数据寄存器中。
数据寄存器空迹的作用是 :
(1)作戚亏此为CPU和主存、外围设备之间信息传送的中转站;
(2)弥补CPU和主存、外围设备之间在 *** 作速度上的差异;
(3)在单累加器结构的运算器中,数据寄存器还可兼作 *** 作数寄存器。
2. 指令寄存器
指令寄存器(Instruction Register,IR)用来保存当前正在执行的一条指令。
当执行一条指令时,首先把该指令从主存读取到数据寄存器中,然后再传送至指令寄存器。
指令包括 *** 作码和地址码两个字段,为了执行指令,必须对 *** 作码进行测试,识别出所要求的 *** 作,指令译码器(Instruction Decoder,ID)就是完成这项工作的。指令译码器对指令寄存器的 *** 作码部分进行译码,以产生指令所要求 *** 作的控制电位,并将其送到微 *** 作控制线路上,在时序部件定时信号的作用下,产生具体的 *** 作控制信号。
指令寄存器中 *** 作码字段的输出就是指令译码器的输入。 *** 作码一经译码,即可向 *** 作控制器发出具体 *** 作的特定信号。
3. 程序计数器
程序计数器(Program Counter,PC)用来指出下一条指令在主存储器中的地址。
在程序执行之前,首先必须将程序的首地址,即程序第一条指令所在主存单元的地址送入PC,因此PC的内容即是从主存提取的第一条指令的地址。
当执行指令时,CPU能自动递增PC的内容,使其始终保存将要执行的下一条指令的主存地址,为取下一条指令做好准备。若为单字长指令,则(PC)+1àPC,若为双字长指令,则(PC)+2àPC,以此类推。
但是,当遇到转移指令时,下一条指令的地址将由转移指令的地址码字段来指定,而不是像通常的那样通过顺序递增PC的内容来取得。
因此,程序计数器的结构应当是具有寄存信息和计数两种功能的结构。
4. 地址寄存器
地址寄存器(Address Register,AR)用来保存CPU当前所访问的主存单元的地址。
由于在主存和CPU之间存在 *** 作速度上的差异,所以必须使用地址寄存器来暂时保存主存的地址信息,直到主存的存取 *** 作完成为止。
当CPU和主存进行信息交换,即CPU向主存存入数据/指令或者从主存读出数据/指令时,都要使用地址寄存器和数据寄存器。
如果我们把外围设备与主存单元进行统一编址,那么,当CPU和外围设备交换信息时,我们同样要使用地址寄存器和数据寄存器。
5. 累加寄存器
累加寄存器通常简称累加器(Accumulator,AC),是一个通用寄存器。
累加器的功能是:当运算器的算术逻辑单元ALU执行算术或逻辑运算时,为ALU提供一个工作区,可以为ALU暂时保存一个 *** 作数或运算结果。
显然,运算器中至少要有一个累加寄存器。
6. 程序状态字寄存器
程序状态字(Program Status Word,PSW)用来表征当前运算的状态及程序的工作方式。
程序状态字寄存器用来保存由算术/逻辑指令运行或测试的结果所建立起来的各种条件码内容,如运算结果进/借位标志(C)、运算结果溢出标志(O)、运算结果为零标志(Z)、运算结果为负标志(N)、运算结果符号标志(S)等,这些标志位通常用1位触发器来保存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)