




已阅读5页,还剩84页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/webnew/ 第5章 指令系统 (时间:3次课,6学时) /webnew/ 第5章 指令系统 本章讲述计算机指令功能、指令中包含 的信息、指令的一般格式、被指令处理 的数据如何存储在计算机中、指令如何 寻找被处理的数据、指令分类、指令系 统的兼容性等问题,并列举几种类型的 计算机指令系统,由此可以较为深刻地 理解计算机指令和指令系统的意义。 /webnew/ 第5章 指令系统 n5.1 计算机指令概念 n5.2 指令格式 n5.3 数据的表示和存储 n5.4 寻址方式 n5.5 指令类型 n5.6 指令系统举例 n5.7 机器语言、汇编语言和高级语 言 /webnew/ 5.1 计算机指令概念 n软件系统分为许多层次,最低的一层就是紧临硬 件的一层,它直接控制计算机的硬件运行,这一 层就是指令系统。指令系统是一种型号的计算机 所具有的全体指令的集合。不同型号的计算机有 不同的指令系统,一般不兼容。 n计算机正在执行的指令(二进制信息)是存放在 控制器的指令寄存器中的。一条指令的功能就是 告诉计算机要完成什么操作,至于具体如何完成 ,必须将指令寄存器中的指令经控制器的译码电 路和微命令发生器,产生微命令;经控制器的地 址形成电路给出操作数地址;由微命令和操作数 地址决定实际的操作步骤。 /webnew/ 5.1 计算机指令概念 n一般说来,指令系统中的一条指令包括两大类信息 ,即操作信息和地址信息。 n计算机指令系统的设置与计算机硬件结构密切相关 。指令系统直接影响到计算机系统的性能,也直接影 响到操作系统和编译程序的编写难度,可见指令系统 的设计是计算机系统设计中的一个核心问题。 n系列(Series)计算机。 n指令系统的改进是围绕着缩小机器语言、汇编语言 与高级语言的语义差异以及有利于操作系统的实现和 优化而进行的,它有利于高级语言程序的编译和提高 机器运行速度。 /webnew/ 5.1 计算机指令概念 n指令系统太复杂也会带来一些不利因素,为了解决 这个问题,70年代末人们提出了便于VLSI实现的精简 指令系统计算机,简称RISC;与之相应的便是复杂 指令系统计算机,简称CISC。 /webnew/ 5.2 指 令 格 式 计算机的指令格式与机器字长、存储器的容量以 及指令的功能都有很大关系。为了便于程序设计、 增加基本操作的并行性、增强指令功能,指令中包 含的信息越多越好。然而如果所有指令都取相同长 度的话,那么在有些指令中,一部分信息将是没有 意义的,这就浪费了指令所占的存储空间,从而增 加了访存次数,可能使整个指令执行时间更长。因 此,如何科学合理地设计指令格式,使指令既能给 出足够信息,其长度又尽可能与机器的字长相匹配 ,从而节省存储空间,缩短取指周期,达到提高机 器性能的目的,一直是指令格式设计中的一个重要 问题。 /webnew/ 5.2 指 令 格 式 n5.2.1 指令的一般格式 n5.2.2 指令操作码的扩展技 术 n5.2.3 指令长度与字长的关 系 /webnew/ 5.2.1 指令的一般格式 计算机通过执行指令来处理各种数据。为了指出 数据的来源、操作结果的去向及所执行的操作, 一条指令必须包含下列信息。 n 操作码 n 操作数的地址。 n 下一条指令的地址 根据上述分析可知,一条指令实际上包括两种信息 ,即操作码和地址码。 1. 零地址指令 OP CODE 2. 一地址指令 OPCODEA 3. 两地址指令 4. 三地址指令 /webnew/ 5.2.1 指令的一般格式 5. 多地址指令 在某些性能较好的大、中型机甚至高档次小型机 中,往往设置一些功能很强、用于处理成批数据的指 令,如字符串处理指令,向量、矩阵运算指令。为了 描述一批数据,指令中需要多个地址来指出数据存放 的首地址、长度和下标等信息。 以上所述的几种指令只是一般情况,并非所有计 算机都具有。零地址、一地址和两地址指令具有指令 短、执行速度快、硬件实现简单等特点,多为结构较 简单、字长较短的小型、微型机所采用;而两地址、 三地址和多地址指令具有功能强、便于编程等特点, 多为字长较长的大、中型机所采用。但也不能一概而 论。 /webnew/ 5.2.1 5.2.1 指令的一般格式指令的一般格式 在计算机中,指令和数据一样都是以二进制码形 式存储的,所以如果仅从存储形式来看,两者并没 有差别。但是,指令的地址由程序计数器(PC)给出 ,而数据的地址则是由指令规定的,在CPU控制下 访存时,肯定不会将指令和数据混淆。 为了程序能重复执行,一般要求程序在运行前后 所有的指令都保持不变,因此在程序执行过程中, 要避免修改指令;一旦发生了修改指令的情况,则 按出错处理。 /webnew/ 5.2.2 指令操作码的扩展技术 指令的操作码长度决定了指令系统中完成不同 操作的指令条数。若某机器的操作码长度为K位, 则它最多只能有2K条不同指令。指令操作码通常 有两种编码格式,一种是固定格式,即操作码的 长度固定,且集中放在指令字的一个字段中。这 种格式对于简化硬件设计、减少指令译码时间非 常有利,在字长较长的大、中型机和超级小型机 以及RISC上广泛使用。另一种是可变格式,即操 作码的长度可变,且分散地放在指令字的不同字 段中。这种格式能够有效地压缩程序中操作码的 平均长度,在字长较短的微型机上广泛采用。 /webnew/ 5.2.2 指令操作码的扩展技术 显然,操作码长度不固定将增加指令译码和分 析的难度,使控制器的设计复杂化,因此对操作 码的编码至关重要。通常是在指令字中用一个固 定长度的字段来表示基本操作码,而对于一部分 不需要某个地址码的指令,则把它们的操作码扩 展到该地址字段,这样,既能充分地利用指令字 的各个字段,又能在不增加指令长度的情况下扩 展操作码的长度,使它可以表示更多的指令。例 如,设某机器的指令长度为16位,包括4位基本 操作码字段和3个4位地址字段,其格式如图5-1 所示。 图5-1 指令格式 /webnew/ 5.2.2 指令操作码的扩展技术 (1)15条三地址指令的操作码由4位基本操作码给出 ,范围为00001110,剩下一个码点1111用于 把操作码扩展到A1,即从4位扩展到8位。 (2)15条二地址指令的操作码由扩展后的8位操作码 给出,范围为1111000011111110,剩下一 个码点11111111用于把操作码扩展到A2,即从 8位扩展到12位。 (3)15条一地址指令的操作码由12位操作码给出, 范围为111111110000111111111110,剩 下一个码点111111111111用于把操作码扩展到 A3,即从12位扩展到16位。 (4)16条零地址指令的操作码使用16位,范围为 11111111111100001111111111111111 。 /webnew/ 5.2.2 指令操作码的扩展技术 除了上述方法外,还有其他许多扩展方法,如 可以形成15条三地址指令、14条两地址指令、 31条一地址指令和16条零地址指令,共76条指 令。实际上,指令操作码是有空余的。在可变长 度的指令系统的设计中,到底使用何种扩展方法 ,所要遵循的一个重要原则是,使用频度(即指令 在程序中出现的概率)高的指令应分配较短的操作 码;使用频度低的指令应分配较长的操作码。这 样,不仅可以有效地缩短操作码在程序中的平均 长度,节省存储器空间,而且缩短了经常使用的 指令的译码时间,因而可以提高程序的运行速度 。 /webnew/ 5.2.2 指令操作码的扩展技术 这里特别强调指出,计算机中的指令操作码总 是希望有一定的规整性,否则会使硬件实现复杂 化。此外,为了便于在计算机内存放,指令的长 度一般是字节的整数倍,所以操作码与地址码两 部分长度之和就应该是字节的整数倍,因此在考 虑操作码长度时还应考虑地址码的要求。 由此可见,操作码扩展技术是一种重要的指令 优化技术,它可以缩短指令的平均长度,减少程 序的总位数以及增加指令字所能表示的操作信息 。扩展操作码比固定操作码译码复杂,使控制器 的设计难度增大,也需要更多的硬件来支持。 /webnew/ 5.2.3 指令长度与字长的关系 字长是指计算机能直接处理的二进制数据的位 数,它与计算机的功能和用途有很大的关系,是 计算机的一个重要技术指标。首先,字长决定了 计算机的运算精度,字长越长,计算机的运算精 度越高,因此,高性能的计算机字长较长,而性 能较差的计算机字长相对要短。其次,地址长度 决定了指令直接寻址能力,若为n 位,则给出的n 位直接地址可以寻址2n字节。这对于字长较短(8 位或16位)的微型机来说,远远满足不了实际需要 。扩大寻址能力的方法,一是通过增加机器字长 来增加地址码的长度;二是采用地址扩展技术, 把存储空间分成若干个段,用基地址加位移量的 方法来增加地址码的长度。 /webnew/ 5.2.3 指令长度与字长的关系 为了便于处理字符数据和尽可能地充分利用存 储空间,一般机器字长都是字节长度(即8位)的1 、2、4或8倍,也就是8、16、32、64位。20世 纪80年代的微型机的字长多为8、16和32位,大 中型机的字长多为32位和64位,因此,一个字中 可以存储1、2、4或8个字符。随着电路集成度的 提高,机器字长也在增长,16位微机也趋于淘汰 。 指令的长度主要取决于操作码的长度、操作数 地址的长度和操作数地址的个数。由于操作码的 长度、操作数地址的长度及所采用的格式不同, 各指令的长度不是固定的,但也不是任意的。为 了充分利用存储空间,指令的长度通常为字节的 整数倍。 /webnew/ 5.2.3 指令长度与字长的关系 指令的长度与机器的字长没有固定关系,它既 可以小于或等于机器的字长,也可以大于机器字 长。前者称为短格式指令,后者称为长格式指令 ,一条指令存放在地址连续的存储单元中。在同 一台计算机中可能既有短格式指令,又有长格式 指令,但通常是把最常用的指令(如算术逻辑运算 指令、数据传送指令)设计成短格式指令,以便节 省存储空间和提高指令的执行速度。 /webnew/ 5.3 数据的表示和存储 计算机中的基本数据有逻辑(布尔)数、定点数( 整数)、浮点数(实数)、十进制、字符串、数组等 。对这些数据的运算可以设置专门的指令,也可 以仅设置最简单的算术逻辑运算指令,再通过执 行程序来实现对其他类型数据的处理,但后者的 速度下降许多。在机器中,若设置能直接对矩阵 向量数据(数组)进行运算的指令(增加相应的硬件 ),可以大大提高对向量(数组)的处理速度,这一 般只在巨型计算机中才采用。 目前计算机所用的数据字长一般为32位,而存 储器地址一般按字节表示,即一个存储单元只能 存放一个字节的数据,因此一条指令通常要占用 几个存储单元,使用几个存储器地址。 /webnew/ 5.3 数据的表示和存储 计算机指令系统可支持对字节、半字、字、双 字的运算,有些计算机有位处理指令。为便于硬 件实现,一般要求多字节数据对准边界,如图5- 2(a)所示。当所存数据不能满足此要求时,则填 充一个或多个空白字节。也有的计算机不要求对 准边界,但可能增加访问存储器次数。假如存储 器与运算部件间数据通路的宽度为32位(一个字) ,在不按边界对准的计算机中,访存指令所要求 存取的数据(例如一个字)可能在两个存储单元中 ,因此需要访问两次存储器,而且还要对高低字 节的位置进行调整,图5-2(b)中的阴影部分即属 这种情况。 /webnew/ (a) 多字节数据对准边界 图5-2 存储器中数据的存放举例 (b) 数据不对准边界 /webnew/ 5.3 数据的表示和存储 在数据对准边界的计算机中,当以二进制来表 示地址时,半字地址的最低位恒为零,字地址的 最低两位为零,双字地址的最低三位为零。图5-3 为按字节编址的双字数据的两种字节次序:低字 节为低地址,如图5-3(a)所示;高字节为低地址 ,如图5-3(b)所示。 (a) 低字节为低地址 (b) 高字节为低地址 图5-3 两种字节次序 /webnew/ 5.4 寻 址 方 式 在执行一条指令的时候,操作数可能在运算部 件的某个寄存器中或存储器中,也可能就在本指 令中。正在运行的程序总是存放在存储器(内存) 中,正在执行的指令总是在CPU内控制器的指令 寄存器中。所谓寻址方式(或编址方式)指的是确 定本条指令的数据地址及下一条要执行的指令地 址的方法,它与计算机硬件结构紧密相关,而且 对指令格式和功能影响很大。从程序员角度看, 寻址方式与汇编程序设计的关系极为密切;与高 级语言的编译程序设计也同样密切。不同的计算 机有不同的寻址方式,但其基本原理是相同的。 有的计算机寻址种类少,因此在指令的操作码中 表示出寻址方式;而有的计算 /webnew/ 5.4 寻 址 方 式 机采用多种寻址方式,此时在指令中专设一个字 段表示一个操作数的来源或去向。这里仅介绍几 种被广泛采用的基本寻址方式。在一些计算机中 ,某些寻址方式可以组合使用,从而形成更复杂 的寻址方式。 /webnew/ 5.4 寻 址 方 式 1. 直接寻址 对直接寻址方式来说,指令的地址码部分直接给出 操作数在存储器中的地址,图5-4(a)仅给出一个操作 数地址;当有多个地址时,情况类似。直接寻址方式 可以由操作码表示出来。图5-4(b)在指令中增加了一 个寻址方式字段M,假如M为3位二进制码,则可表 示8种寻址方式。 图5-4 直接寻址方式 /webnew/ 5.4 寻 址 方 式 2. 寄存器寻址 计算机的中央处理器中一般设置有一定数量的 通用寄存器,用以存放操作数、操作数的地址或 中间结果。假如地址码部分给出某一通用寄存器 地址,而且所需的操作数就在这一寄存器中,则 称为寄存器寻址。通用寄存器的数量一般在几个 至几十个之间,比存储单元少得多,因此地址码 短,而且对寄存器存取数据比对存储器存取数据 快得多,所以这种寻址方式可以缩短指令长度, 节省存储空间,提高指令的执行速度,因而在计 算机中得到广泛应用。 /webnew/ 5.4 寻 址 方 式 3. 基址寻址 基址寻址是指在计算机中设置一个专用的基址寄存 器,或由指令指定一个通用寄存器作为基址寄存 器。操作数的地址由基址寄存器的内容和指令的 地址码A相加得到,如图5-5所示。在这种情况下 ,地址码A通常被称为位移量(Disp)。也可用其他 方法获得位移量。 图5-5 基址寻址过程 /webnew/ 5.4 寻 址 方 式 4. 变址寻址 变址寻址的过程如图5-6所示。指令地址码部分给 出的地址A和指定的变址寄存器R的内容通过加法 器相加,所得的和作为地址从存储器中读出所需的 操作数。这是几乎所有计算机都采用的一种寻址方 式。如果计算机中还有基址寄存器,则在计算有效 地址时还要加上基址寄存器内容。 图5-6 变址寻址过程 /webnew/ 5.4 寻 址 方 式 5. 间接寻址 在寻址时,若根据指令的地址码所取出的内容是操作 数的地址或指令地址,这种寻址方式就称为间接寻址 或间址。根据地址码指的是寄存器地址还是存储器地 址,间接寻址又可分为寄存器间接寻址和存储器间接 寻址两种方式。间接寻址有一次间址和多次间址两种 情况,大多数计算机只允许一次间址。对于存储器一 次间址来说,需要访问两次存储器才能取得数据,第 一次从存储器读出的是操作数的地址,第二次才读出 操作数。 /webnew/ 5.4 寻 址 方 式 图5-7(a)、(b)分别为寄存器间接寻址与存储器间接 寻址的操作数寻址过程。图5-8以转移指令JUMP为 例,说明在直接寻址和间接寻址方式下,如何确定下 一条要执行的指令地址。 (a) 寄存器间接寻址 (b) 存储器间接寻址 图5-7 间接寻址过程 /webnew/ (a) 直接寻址 (b) 间接寻址 图5-8 确定JUMP指令的转移地址 /webnew/ 5.4 寻 址 方 式 6. 相对寻址 把程序计数器PC的内容(即当前正在执行的指令地址 )与地址码部分给出的位移量(Disp)之和作为操作数 的地址或转移地址,称为相对地址。主要用于转移 指令,执行本条指令之后,将转移到(PC)+Disp, (PC)表示程序计数器的内容。相对寻址有两个特点 :第一,转移地址不是固定的,它随着PC值的变化 而变化,并且总是相差一个固定值Disp,因此无论 程序装入存储器的任何地方,均能正确运行,对浮 动程序很适用。第二,位移量可正可负,通常用补 码表示。若位移量为n位,则这种方式的寻址范围在 到之间。 /webnew/ 5.4 寻 址 方 式 当前计算机的程序和数据一般是分开存放的,程序区 在程序执行过程中不允许修改。在程序与数据分区存 放的情况下,不用相对寻址方式来确定操作数地址。 7. 立即数 所需的操作数由指令的地址码部分直接给出,就称为 立即数(或直接数)寻址方式。这种方式的特点是,取指 时操作码和一个操作数同时被取出,不必再次访问存 储器,提高了指令的执行速度。但是由于这一操作数 是指令的一部分,不能修改,而一般情况下,指令所 处理的数据都是在不断变化的(如上条指令执行的结果 是下条指令的操作数),故这种方式只能适用于操作数 固定的情况。通常用于给某一寄存器或存储器单元赋 初值或提供一个常数。 /webnew/ 5.5 指 令 类 型 一台计算机的指令系统通常有几十条至几百条指令 ,按其所完成的功能可分为算术逻辑运算指令、 移位操作指令、浮点运算指令、十进制运算指令 、字符串处理指令、向量运算指令、数据传送指 令、转移类指令、堆栈操作指令、输入/输出指令 、特权指令。本节分别说明各类指令的功能。 /webnew/ 5.5 指 令 类 型 1. 算术逻辑运算指令 一般计算机都有算术逻辑运算指令。通常计算机 具有对两个数进行与、或、非(求反)、异或(按位加) 等操作的逻辑运算指令。有些计算机还设置有位操 作指令,如位测试(测试指定位的值)、位清除(把指 定位清零)、位求反(取某位的反值)指令等。 2. 移位操作指令 移位操作指令分为算术移位、逻辑移位和循环移 位3种,可以将操作数左移或右移若干位,如图5-9 所示。 /webnew/ 图5-9 各种移位的操作过程 /webnew/ 5.5 指 令 类 型 3. 浮点运算指令 高级语言中的实数(Real)经常是先转换成浮点数的 形式再进行处理。某些机器没有设置浮点运算指令 而用子程序实现,其速度较低。因此主要用于科学 计算的计算机应该设置浮点运算指令,一般能对单 精度(32位)、双精度(64位)数据进行处理。 4. 十进制运算指令 在人机交互作用时,输入/输出的数据都是以十进 制形式表示的。在某些数据处理系统中输入/输出 的数据很多,但对数据本身的处理却很简单。在不 具有十进制运算指令的计算机中,首先将十进制数 转换成二进制数,再在机器内运算;而后又转换成 十进制数据输出。在输入/输出频繁的计算机系统 中,设置十进制运算指令能提高数据处理的速度。 /webnew/ 5.5 指 令 类 型 5. 字符串处理指令 字符串处理指令是一种非数值数据的处理指令, 一般包括字符串传送、字符串比较、字符串查询 、字符串转换等指令。其中,字符串传送指令所 完成的操作是将数据块从主存储器的某区域传送 到另一区域;字符串比较指令所完成的操作是将 一个字符串与另一个字符串逐个字符进行比较, 以确定其是否相等;字符串查询是查找在字符串 中是否含有另一指定的子串或字符;字符串转换 是指将一种数据表达形式转换成另一种表达形式 ,例如从ASCII码转换成EBCDIC码(扩充的二-十 进制交换码)。这种指令在需对大量字符串进行各 种处理的文字编辑和排版方面非常有用。 /webnew/ 5.5 指 令 类 型 6. 数据传送指令 数据传递指令用以实现寄存器与寄存器、寄存器 与存储器单元、存储器单元与存储器单元之间的数 据传送。对于存储器来讲,数据传送包括了对数据 的读(相当于取数指令)或写(相当于存数指令)操作。 数据传送时,数据从源地址传送到目的地址,而源 地址中的数据保持不变,因此实际上是数据复制。 7. 转移类指令 转移类指令用以控制程序流的转移。在大多数情 况下,计算机是按顺序方式执行程序的,但是也经 常会遇到离开原来的顺序转移到另一段程序或循环 执行某段程序的情况。 /webnew/ 5.5 指 令 类 型 按转移的性质,转移指令分为无条件转移、条件 转移、过程调用与返回、陷阱(Trap)等几种。 1)无条件转移与条件转移 2)调用指令与返回指令 3)陷阱与陷阱指令 8.堆栈及堆栈操作指令 堆栈(Stack)是由若干个连续存储单元组成的先进后 出(FILO)存储区,第一个送入堆栈中的数据存放在 栈底,最近送入堆栈中的数据存放在栈顶。栈底是 固定不变的,而栈顶却是随着数据的入栈和出栈在 不断变化。为了表示栈顶的位置,有一个寄存器或 存储器单元用于指出栈顶的地址,这个寄存器或存 储器单元就称为堆栈指针SP(Stack Pointer)。任何 堆栈操作只能在栈顶进行。 /webnew/ 5.5 指 令 类 型 压入指令 PUSH OPR 把OPR(长度为两个字节)压入堆栈 操作是:(SP)-2SP,OPR(SP) 弹出指令 POP OPR 弹出一个数据(长度为两个字节)送 OPR 操作是:(SP)OPR,(SP)+2SP 由于堆栈具有先进后出的性质,因而在中断、子程序 调用过程中广泛用于保存返回地址、状态标志及现场 信息。 堆栈还有一个重要的作用,就是用于子程序调用时参 数的传递,特别是在不同语言程序之间相互调用过程 中,使用堆栈来传递数据更加普遍。 /webnew/ 5.5 指 令 类 型 9. 输入/输出(I/O)指令 计算机所处理的一切原始数据和所执行的程序(除 了固化在ROM中的以外)均来自外部设备的输入,处理 结果需要外部设备输出。输入/输出指令的一般格式是 OP REG A。其中,OP是操作码,表示I/O指令。 REG是寄存器名,用于指定与外部设备交换数据的 CPU中的某寄存器。A是外部设备接口中的寄存器地 址或设备码,其长度一般为8位或16位,可以表示256 64K个设备寄存器(接口中有3类寄存器,即输入数据 寄存器、输出数据寄存器和控制寄存器)。输入指令用 于从A地址所指定的外部设备寄存器中读入一个数据到 REG寄存器中;输出指令刚好相反,把REG寄存器中 的数 /webnew/ 5.5 指 令 类 型 据送到A地址所指定的外部设备寄存器中。此外,I/O 指令还可用来发送控制命令和接收回答信号,用以控 制外部设备的工作。 10. 特权指令 某些指令使用不当会破坏系统或其他用户信息,因 此为了安全起见,这类指令只能用于操作系统或其他 系统软件,而不提供给用户使用,称为特权指令。 11. 其他指令 其他指令包括向量指令、多处理机指令和控制指令 。控制指令包括等待指令,停机指令,空操作指令, 开中断、关中断、置条件码指令。 /webnew/ 5.6 指令系统举例 下面通过几种类型计算机指令系统的介绍来增加认 识,这些计算机(或处理器)是Sun微系统公司的 SPARC90(RISC)、IBM 360/370系列(CISC)、 PDP 11/VAX 11(CISC)系列,Intel公司的 Pentium 系列(基于RISC的处理器内核)。 /webnew/ 5.6 指令系统举例 n5.6.1 SPARC的指令系统 n5.6.2 IBM大型机指令系统 n5.6.3 PDP 11与VAX 11基本指令格 式 n5.6.4 Pentium 的指令系统 /webnew/ 5.6.1 SPARC的指令系统 SPARC指令字长32位,有3种指令格式、6种指 令类型。 1SPARC的指令类型 1)算术运算/逻辑运算/移位指令 n加法指令4条:ADD、ADDCC、ADDX、 ADDXCC。 n减法指令4条:SUB、SUBCC、SUBX、 SUBXCC。 n检查标记的加法指令2条:TADDCC、 TADDCCTV。 n检查标记的减法指令2条:TSUBCC、 TSUBCCTV。 n逻辑运算指令共12条:AND、ANDCC、ANDN 、ANDNCC;OR、ORCC、ORN、ORNCC; XOR、XORCC、XORN、XORNCC。 /webnew/ 5.6.1 SPARC的指令系统 n移位指令3条:SLL(逻辑左移)、SRL(逻辑右移) 、SRA(算术右移)。 n其他还有乘法步、SETHI、SAVE、RESTORE等 。SAVE和RESTORE两条指令分别将现行窗口指 针减1和加1。 n现在对4条加法指令进行说明。以CC结尾的加法 指令表示除了进行加法运算以外还要根据运算结 果置状态触发器N、Z、V、C;X表示加进位信号 ;XCC表示加进位信号并置N、Z、V、C。 2)LOAD/STORE指令 n取/存字节(LDSB/STB)、半字、字、双字共20 条指令,其中一半是特权指令。 /webnew/ 5.6.1 SPARC的指令系统 SPARC结构将存储器分成若干区,其中有4个区 分别为用户程序区、用户数据区、系统程序区和 系统数据区。并规定在执行用户程序时,只能从 用户程序区取指令,在用户数据区存取数据;而 执行系统程序时则可以使用特权指令访问任一区 。 n另外还有两条供多处理机系统使用的数据交换指 令SWAP和读后置字节指令LDSTUB。 3)控制转移类指令5条。 4)读/写专用寄存器指令8条。 以上指令共计66条。 5)浮点运算指令。 6)协处理器指令。 /webnew/ 5.6.1 SPARC的指令系统 由于SPARC为整数运算部件(IU),所以当执行浮 点运算指令或协处理器指令时,将交给浮点运算 器或协处理器处理,当机器没有配置这种部件时 ,将通过子程序实现。 2SPARC的指令格式 格式1:CALL指令 格式2:SETHI指令和BRANCH指令 /webnew/ 5.6.1 SPARC的指令系统 格式3:其他指令 3. 各类指令的功能及寻址方式 下面简单介绍第一类至第四类指令。 1)算术逻辑运算指令 功能:(rs1)OP(rs2) rd (当i=0时) (rs1) OP Simm13 rd (当i=1时) RISC的特点之一是所有参与算术逻辑运算的数均 在寄存器中。 /webnew/ 5.6.1 SPARC的指令系统 2)LOAD/STORE指令(取数/存数指令) 功能:LOAD指令将存储器中的数据送往rd中; STORE指令将rd的内容送往存储器中。 存储器地址的计算(寄存器间接寻址方式):当i=0 时,存储器地址=(rs1)+(rs2);当i=1时,存储 器地址=(rs1)+Simm13。在RISC中,只有 LOAD/STORE指令访问存储器。 3)控制转移类指令 控制转移类指令用于改变PC值,SPARC有以下5 种控制转移指令。 (1)条件转移(BRANCH):根据指令中的Cond字段 (条件码)决定程序是否转移。转移地址由相对寻 址方式形成。 /webnew/ 5.6.1 SPARC的指令系统 (2)转移并连接(JMPL):采用寄存器间址方式形成 转移地址,并将本条指令的地址(即PC值)保存在 以rd为地址的寄存器中,以备程序返回时用。 (3)调用(CALL):采用相对寻址方式形成转移地址 。为了扩大寻址范围,本条指令的操作码只取两 位,位移量有30位。 (4)陷阱(TRAP):采用寄存器间址方式形成转移地 址。 (5)从TRAP程序返回(RETT):采用寄存器间址方式 形成返回地址。 4)读/写专用寄存器指令 SPARC有4个专用寄存器(PSR、Y、WIM、 TBR),其中PSR称为程序状态寄存器。 /webnew/ 5.6.2 IBM大型机指令系统 现在简单介绍IBM 360/370的结构及指令系统。 IBM 360是32位机器,按字节寻址,支持的数据 类型有字节、半字、字、双字(双精度实数)、装 配的十进制数(用4位二进制码表示一个十进制数 ,一个字节放两个十进制数字)和未经装配(拆卸) 的字符串(一个字节放一个字符)。机内有16个32 位通用寄存器,4个双精度(64位)浮点寄存器。 IBM 360/370有5种指令格式,如图5-10所示。 /webnew/ 图5-10 IBM 360/370 指令格式 /webnew/ 5.6.2 IBM大型机指令系统 (1)RR(寄存器-寄存器)格式:两个源操作数都在寄 存器中,结果放在第一个源寄存器中。 (2)RX(寄存器-变址):第一个源操作数与结果放在 同一寄存器中,第二个源操作数在存储器中,其 地址为(X2)+(B2)+D2,D2为12位位移量(无符 号)。 (3)RS(寄存器-寄存器):R1是存放结果的目的寄存 器,R3为源操作数寄存器,另一个操作数在存储 器中,其地址为(B2)+D2。RS与RX的区别在于 RS是三地址格式,并取消了变址寄存器。 (4)SI(寄存器-立即数):将立即数imm(8位)送到 存储器,其地址为(B1)+D1。 (5)SS(存储器-存储器):两个操作数都在存储器 /webnew/ 5.6.2 IBM大型机指令系统 中,其地址分别为(B1)+D1和(B2)+D2, (B1)+ D1还是目的地址。SS格式用于十进制运 算与字符串处理,数据长度(Length)字段可定义 为1个长度(1256个字符)或两个长度(每一个为 116个十进制数)。 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 VAX 11/780是DEC公司于1977年推出的VAX系 列的第一个产品,它将PDP 11结构从16位扩充 到32位。VAX是一种通用寄存器机器,它有16个 通用寄存器,但是R14是堆栈指针,R15为程序 计数器PC,是专用的,因此只有其他14个才是真 正的通用寄存器。 VAX的数据类型:整数有8、16、32、64、128位 5种类型,浮点数有32、64、128位3种表示方式 。另外有8n位字符串、4n 位BCD码,其中n为字 符或数字的数量。VAX还支持固定或可变长度的 位串(最长为32位)处理。 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 PDP 11是16位小型机,它有两组通用寄存器 (R0R5),在任一时刻只有一组工作;3个硬件 堆栈指示器(R6);一个程序计数器PC(R7)。根 据兼容性质,VAX 11应包括PDP 11的全部指令 与寻址方式,即PDP 11上的程序不做任何修改即 可在VAX 11上运行。现以PDP 11的单操作数指 令与双操作数指令为例,对它们的指令格式与寻 址方式作简单介绍。 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 1.单操作数指 令 指令格式: 第156位表示操作码。第50位组成一个6位的字 段,既是源地址字段也是目的地址字段。第20位 说明本指令使用8个寄存器中的哪一个,第53位表 示使用哪种寻址方式。其中第3位为0时表示直接寻 址,第3位为1时表示间接寻址,第54位表示4种 基本寻址方式。 单操作数指令有清除(CLR)、增1(INC)、减1(DEC) 、求补(NEG)、测试(TST)等。 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 2.双操作数指 令 指令格式: 第1512位表示操作码。第116位组成一个6位字段 ,为源地址字段(第一操作数);第50位组成另一个6 位字段,既是源操作数字段(第二操作数),也是目的 操作数字段。 双操作数指令有传送(MOV)、加(ADD)、减(SUB)、比 较(CMP)、按位加(XOR)、逻辑加(BIS)等。 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 3. 转移指 令 指令格式: 转移地址=PC+2位移量 4. 寻址方式 这里只讲述单操作数指令与双操作数指令的寻址方式 。 1)直接寻址 表5-1列出了直接寻址的4种基本方式。现以ADD指 令为例,来说明寻址方式。 /webnew/ 方式名 称汇编 程序语法功 能 0寄存器方式Rn 寄存器内容是操作数 2 自动增量方 式 (Rn)+ 寄存器内容是操作数地址,完成指定操作后, 寄存器内容加2 4 自动减量方 式 -(Rn) 寄存器内容减2后作为操作数地址 6变址方式X(Rn) X+(Rn)形成操作数地址,X值存放在紧跟指令后 的存储器单元 表5-1 直接寻址方式 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 (1) ADD R2,R4 寻址方式 操作码 寄存器地址 指令代码 0 6 0 2 0 4 (八进制表示) 操作:R2内容加到R4的内容上。 例: 操 作 前 操 作 后 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 (2)ADD(R2)+,R4 指令代码062204 操作:R2内容为操作数地址,将此操作数加到R4 的内容上,然后R2的内容加2。 例: 操作前 操作后 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 (3)ADD-(R3),R0 指令代码064300 操作:R3内容减2后作为操作数地址,将此操作数 加到R0的内容上。 例: 操作前 操作后 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 (4)ADD 30(R2),20(R5) 指令代码066265 操作:R2内容加30(加和是001130)作为源操作 数地址,R5内容加20(加和是002020)作为另一 源操作数和目的操作数地址,两个操作数相加后 ,结果(加和是000002)存放在目的地址 (002020)中。 例: 操作前 操作后 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 2)间接寻址 表5-2列出了间接寻址的4种方式。间接寻址方式 类似于相应的直接寻址方式,这里仅举两例说明 。 方式名 称汇编 程序语法功 能 1寄存器间址Rn或(Rn) 寄存器内容是操作数地 址 3自动增量间址(Rn)+ 寄存器内容是操作数地 址的地址,操作后寄 存器内容加2 5自动减量间址 -(Rn) 寄存器内容减2后,作 为操作数地址的地址 7变址间址X(Rn) X加(Rn)形成操作数地址 的地址,X值紧跟指 令后存储 表5-2 间接寻址方式 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 (1)ADD (R2),R1 指令代码061201 ADD R2,R1 操作前 操作后 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 (2)变址间接方式 ADD 1000(R2),R1 指令代码067201 当PC作为通用寄存器时,表5-1和表5-2中列出的 寻址方式仍适用,特别是表5-3中所列出的几种情 况有特殊的效果。 方式名 称汇编功 能 2立即型#n存放指令单元的下一个单元内是操作数 3绝对型#n存放指令单元的下一个单元内是操作数地址 6相对型A 指令单元的下一个单元内是操作数地址与指令地 址(PC中)的相对位移量 7相对间接A 指令单元的下一个单元内是操作数地址的地址与 指令地址(PC中)的相对位移量 表5-3 PC作为通用寄存器的特殊寻址方式 /webnew/ 5.6.3 PDP 11与VAX 11基本指令格式 操作前 操作 后 /webnew/ 5.6.4 Pentium 的指令系统 Pentium 是完全的32位机。由于它是Intel公 司在IBM PC上使用的8088 CPU的嫡系后代,所 以虽然Pentium 的性能与8088相比已不可同 日而语,但可以完全向下兼容到8088。Intel公 司的x86系列CPU采用的是CISC指令系统的设计 思想,指令系统规模很庞大,但Pentium 却采 用了一个基于RISC的处理器内核,使用了RISC 的大量特性,使Intel公司的x86系列微处理器的 性能上升到一个崭新的层次。 1Pentium 的指令格式 Pentium 的指令格式比较繁杂,最多可有6个 变长域,其中5个是可选的,如图5-11所示。 /webnew/ 图5-11 Pentium 的指令格式 /webnew/ 5.6.4 Pentium 的指令系统 (1)前缀字节:前缀字节是一个额外的操作码,它 附加在指令的最前面,用于改变指令的操作。 (2)操作码字节:操作码的最低位用于指示操作数 是字节还是字,次低位用于指示内存地址(若需 要访问内存的话)是源地址还是目的地址。 (3)模式字节:模式字节包含了与操作数有关的信 息。该字节可分为2位的MOD字段及两个3位的 寄存器字段REG和R/M。在某些情况下,模式 字节的前3位可用做操作码扩展,这时操作码的 长度就是11位。 /webnew/ 5.6.4 Pentium 的指令系统 Pentium 指令系统规定操作数中必须有一个是 在寄存器中。模式字段MOD与R/M字段组合定义 另一个操作数的寻址方式,REG字段规定了另一 个操作数所在的寄存器。 从逻辑上来说,EAX、EBX、ECX、EDX、ESI、 EDI、EBP和ESP中的任意一个都可以用于源操作 数寄存器和目的操作数寄存器。但是编码规则禁 止了其中的某些组合,而把它们用于特殊的目的 。 /webnew/ 5.6.4 Pentium 的指令系统 (4)额外模式字节SIB:SIB字节定义了一个比例因 子(Scale)和两个寄存器。当出现SIB字节的时候 ,计算操作数地址的方法是:先用变址寄存器 (Index)乘上1、2、4或者8(由比例因子决定), 然后再加上基址寄存器(Base),最后再根据MOD 字节来决定是否要加上一个8位或者32位的偏移 量。 (5)偏移量:偏移量字节给出了1、2或者4个字节的 内存地址。 (6)立即数:立即数字节给出了1、2或者4个字节的 常量。 /webnew/ 5.6.4 Pentium 的指令系统 2Pentium 的寻址方式 Pentium 具有很大的地址空间,采用了段页式 存储管理模式,即将内存分为16 384个段,每个 段的容量为4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术教师专业素养与教学能力提升培训
- 课程策划培训
- 客服主管培训
- 喷绒工艺流程图
- 培训成果总结汇报
- 进修教师培训开班仪式
- 合作协议合同简单模板:美甲店专用
- 国际贸易合同签订与履行实训报告
- 公共设施装饰工程合同
- 设备租赁合同版
- 第十二讲 建设社会主义生态文明PPT习概论2023优化版教学课件
- 工商管理实习周记十篇
- 幼儿园体育游戏活动评价表
- 2023年通管局安全员考试-培训及考试题库(导出版)
- GB/T 4857.22-1998包装运输包装件单元货物稳定性试验方法
- GB/T 25074-2010太阳能级多晶硅
- GB/T 23842-2009无机化工产品中硅含量测定通用方法还原硅钼酸盐分光光度法
- GA/T 1217-2015光纤振动入侵探测器技术要求
- 特种陶瓷介绍课件
- 有机物污染(环境化学)课件
- 安全生产培训合格证书样本
评论
0/150
提交评论