【2017年整理】寄存器(register)

上传人:豆浆 文档编号:1032836 上传时间:2017-05-26 格式:DOC 页数:17 大小:367.50KB
返回 下载 相关 举报
【2017年整理】寄存器(register)_第1页
第1页 / 共17页
【2017年整理】寄存器(register)_第2页
第2页 / 共17页
【2017年整理】寄存器(register)_第3页
第3页 / 共17页
【2017年整理】寄存器(register)_第4页
第4页 / 共17页
【2017年整理】寄存器(register)_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《【2017年整理】寄存器(register)》由会员分享,可在线阅读,更多相关《【2017年整理】寄存器(register)(17页珍藏版)》请在金锄头文库上搜索。

1、寄存器Scope of register:寄存器是 CPU 内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其 实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储 1 位二进制数,所以由 N 个锁存器或触发器可以构成 N 位寄存器。寄存器是中央 处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂 存指令、数据和位址。在中央 处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC) 。在中央 处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)

2、。1、寄存器 - 特点及原理寄存器又分为内部寄存器与外部寄存器,所谓内部寄存器,其实也是一些小的存储单元,也能存储数据。但同存储器相比, 寄存器又有自己独有的特点: 寄存器位于 CPU 内部,数量很少,仅十四个;寄存器所能存储的数据不一定是 8bit,有一些寄存器可以存储 16bit 数据,对于 386/486 处理器中的一些寄存器则能存储 32bit 数据;每个内部寄存器都有一个名字,而没有类似存储器的地址编号。寄存器的功能十分重要,CPU 对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。 外部寄存器是计 算机中其它一些部件上用于暂存数据的寄存器,它与 CPU 之间通

3、过“端口” 交换数据,外部寄存器具有寄存器和内存储器双重特点。有些 时候我们常把外部寄存器就称为“ 端口”,这种说法不太严格,但经常这样说。外部寄存器虽然也用于存放数据,但是它保存的数据具有特殊的用途。某些寄存器中各个位的 0、1 状 态反映了外部设备的工作状态或方式;还有一些寄存器中的各个位可对外部设备进行控制;也有一些端口作为 CPU 同外部设备交换数据的通路。所以说,端口是 CPU 和外设间的联系 桥梁。CPU 对端口(Ports)的访问也是依据端口的“ 编号 ”(地址),这一点又和访问存储器一样。不过考虑到机器所联接的外设数量并不多,所以在设计机器的时候仅安排了 1024 个端口地址,

4、端口地址范围为 0-3FFH。2、寄存器主要技术1重命名技术 寄存器重命名,是 CPU 在解码过程中对寄存器进行重命名,解码器把“其它”的寄存器名字变为“ 通用”的寄存器名字,本质上是通过一个表格把 x86 寄存器重新映射到其它寄存器,这样 可以让实际使用到的寄存器远大于 8 个。这样做的好处除了便于前面指令发生意外或分支预测出错时取消外,还避免了由于两条指令写同一个寄存器时的等待。2乱序执行技术采用乱序执行技术使 CPU 内部电路满负荷运转并相应提高了 CPU 运行程序的速度。这好比请 A、B、C 三个名人为春节联欢晚会题写横幅“ 春节联欢晚会”六个大字,每人各写两个字,如果这时在一张大纸上

5、按 顺序由 A 写好“春节” 后再交给 B 写“联欢” ,然后再由 C 写“晚会”,那么这样在 A 写的时候, B 和 C 必须等待,而在 B 写的时候 C 仍然要等待而 A 已经没事了。但如果采用三个人分别用三张纸同时写的做法,那么 B 和 C 都不必等待就可以同时各写各的了,甚至 C和 B 还 可以比 A 先写好也没关系(就像乱序执行),但当他们都写完后就必须重新在横幅上按“ 春节联欢晚会 ”的顺序排好(自然可以由 别人做,就象 CPU 中乱序执行后的重新排列单元)才能挂出去。、寄存器 - 技术规范寄存器通常都用来意指由一个指令之输出或输入可以直接索引到的寄存器群组。更适当的是称为“架构寄

6、存器”。x86 指令及定义八个 32 位元寄存器的集合,但一个实作 x86 指令集的 CPU 可以包含比八个更多的寄存器。共有以下几类的寄存器: (1)资料(Data) 寄存器:用来 储存整数数字(参考以下的浮点寄存器)。在某些简单/旧的 CPU,特别的资料寄存器是累加器,作 为数学 计算之用。(2)位址(Address)寄存器持有内存位址,以及用来存取内存。在某些简单/旧的CPU 里,特别的位址寄存器是索引寄存器(可能出现一个或多个)。(3)通用目的寄存器(GPRs)- 可以保存资料或位址两者,也就是说他们是结合资料/位址寄存器的功用。(4)浮点寄存器(FPRs )-用来储存浮点数字。(5)

7、常数(Constant)寄存器-用来持有只读的数值(例如 0、1、圆周率等等)。(6)向量寄存器-用来储存由向量处理器执行 SIMD (Single Instruction Multiple Data)指令所得到的资料。(7)特殊目的寄存器(SFR)-储存 CPU 内部的资料,像是程式计数器(或称为指令指标),堆栈寄存器,以及状态寄存器(或称微处理器状态字组)。(8)指令寄存器(Instruction Register )-储存现在正在被执行的指令(9)索引寄存器(Index Register)-是在程序执行时用来更改算子(PPointer)位址之用。在某些架构下,模式指示寄存器(也称为“机器

8、指示寄存器”)储存和设定跟处理器自己有关的资料。由于他们的意图目的是附加到特定处理器的设计,因此他们并不被预期会成微处理器世代之间保留的标准。寄存器随机存取内存(RAM)提取资讯的寄存器与 CPU(位于不同芯片的储存寄存器集合):(1)内存缓冲寄存器(Memory buffer register)(2)内存资料寄存器(Memory data register)(3)内存位址寄存器(Memory address register )(4)内存型态范围寄存器(Memory Type Range Registers) 寄存器 - 具体分类1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从

9、而节省读取操作数所需占用总线和访问存储器的时间。32 位 CPU 有 4 个 32 位的通用寄存器EAX、EBX、ECX 和 EDX。对低 16 位数据的存取,不会影响高 16 位的数据。这些低 16 位寄存器分别命名为:AX、BX、 CX 和 DX,它和先前的 CPU 中的寄存器相一致。 4 个 16 位寄存器又可分割成 8 个独立的 8 位寄存器(AX:AH-AL、BX :BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合” 的特性,灵活地处理字/ 字节的信息。寄存器 AX 和 AL 通常称为累加器(Accumul

10、ator) ,用累加器进行的操作可能需要更少时间。累加器可用于乘、除、 输入/输出等操作,它 们 的使用频率很高;寄存器 BX称为基地址寄存器(BaseRegister) ,它可作 为存储器指针来使用;寄存器 CX 称为计数寄存器(CountRegister),在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用 CL 来指明移位的位数;寄存器 DX 称为数据寄存器(DataRegister) 。在 进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放 I/O 的端口地址。在 16 位 CPU 中,AX、BX、CX 和 DX 不能作为基址和变址寄存器来存放存 储单元

11、的地址,但在32 位 CPU 中,其 32 位寄存器 EAX、EBX、ECX 和 EDX 不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以, 这些 32 位寄存器更具有通用性。2、变址寄存器32 位 CPU 有 2 个 32 位通用寄存器 ESI 和 EDI。其低 16 位对应先前 CPU 中的SI 和 DI,对低 16 位数据的存取,不影响高 16 位的数据。寄存器 ESI、EDI、SI 和DI 称 为变 址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

12、变址寄存器不可分割成 8 位寄存器。作为通用寄存器,也可存 储算术逻辑运算的操作数和运算结果。它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且 还具有特殊的功能。寄存器3、指针寄存器32 位 CPU 有 2 个 32 位通用寄存器 EBP 和 ESP。其低 16 位对应先前 CPU 中的SBP 和 SP,对低 16 位数据的存取,不影响高 16 位的数据。寄存器EBP、ESP、BP 和 SP 称为指针寄存器(PointerRegister),主要用于存放堆 栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

13、指针寄存器不可分割成 8 位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。它们主要用于访问堆栈内的存储单元,并且规定:(1)BP 为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;(2)SP 为堆栈指针(StackPointer)寄存器,用它只可访问栈顶。寄存器4、段寄存器段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。CPU 内部的段寄存器:CS代码段寄存器(CodeSegmentRegister),其值为 代码段的段值;DS数据段寄存器(

14、DataSegmentRegister),其 值为数据段的段值;ES附加段寄存器(ExtraSegmentRegister),其 值为附加数据段的段值;SS堆栈段寄存器(StackSegmentRegister),其值为 堆栈段的段值;FS附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值;GS附加段寄存器(ExtraSegmentRegister),其 值为附加数据段的段值。 在 16 位 CPU 系统中,它只有 4 个段寄存器,所以,程序在任何时刻至多有 4 个正在使用的段可直接访问;在 32 位微机系统中,它有 6 个段寄存器,所以,在此环境下开发的程序最多

15、可同时访问 6 个段。32 位 CPU 有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简单描述如下:实方式:前 4 个段寄存器 CS、DS、ES 和 SS 与先前 CPU 中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为段值:“ 偏移量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段 值,而是称为”选择子”(Selector)的某个值。寄存器5、指令指针寄存器32 位 CPU 把指令指针扩展到 32 位,并 记作 EIP,EIP 的低 16 位与先前 CPU 中

16、的 IP 作用相同。指令指针 EIP、IP(InstructionPointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它 们的功能时,不考虑存在指令队列的情况。在实方式下,由于每个段的最大范围为 64K,所以,EIP 中的高 16 位肯定都为 0,此时,相当于只用其低 16 位的 IP 来反映程序中指令的执行次序。寄存器 - intel 80X06 系列寄存器 简介以 Intel 80x86 CPU 为例,80x86 CPU 的寄存器组包括若干个 8 位、16 位和32 位寄存器,其中,32 位寄存器是从 80386 CPU 开始才引入的。这些寄存器可以被分为 4 类,它们是通用寄存器、段寄存器、 专用寄存器及其他寄存器。通常,应用程序主要使用前 3 类寄存器。1. 通用寄存器80x86 CPU 的通用寄存器包括 8 个 8 位通用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号