《计算机组成原理》第5章:指令系统.ppt_第1页
《计算机组成原理》第5章:指令系统.ppt_第2页
《计算机组成原理》第5章:指令系统.ppt_第3页
《计算机组成原理》第5章:指令系统.ppt_第4页
《计算机组成原理》第5章:指令系统.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章 指令系统,(时间:3次课,6学时),第5章 指令系统,本章讲述计算机指令功能、指令中包含的信息、指令的一般格式、被指令处理的数据如何存储在计算机中、指令如何寻找被处理的数据、指令分类、指令系统的兼容性等问题,并列举几种类型的计算机指令系统,由此可以较为深刻地理解计算机指令和指令系统的意义。,第5章 指令系统,5.1 计算机指令概念 5.2 指令格式 5.3 数据的表示和存储 5.4 寻址方式 5.5 指令类型 5.6 指令系统举例 5.7 机器语言、汇编语言和高级语言,5.1 计算机指令概念,软件系统分为许多层次,最低的一层就是紧临硬件的一层,它直接控制计算机的硬件运行,这一层就是指令系统。指令系统是一种型号的计算机所具有的全体指令的集合。不同型号的计算机有不同的指令系统,一般不兼容。 计算机正在执行的指令(二进制信息)是存放在控制器的指令寄存器中的。一条指令的功能就是告诉计算机要完成什么操作,至于具体如何完成,必须将指令寄存器中的指令经控制器的译码电路和微命令发生器,产生微命令;经控制器的地址形成电路给出操作数地址;由微命令和操作数地址决定实际的操作步骤。,5.1 计算机指令概念,一般说来,指令系统中的一条指令包括两大类信息,即操作信息和地址信息。 计算机指令系统的设置与计算机硬件结构密切相关。指令系统直接影响到计算机系统的性能,也直接影响到操作系统和编译程序的编写难度,可见指令系统的设计是计算机系统设计中的一个核心问题。 系列(Series)计算机。 指令系统的改进是围绕着缩小机器语言、汇编语言与高级语言的语义差异以及有利于操作系统的实现和优化而进行的,它有利于高级语言程序的编译和提高机器运行速度。,5.1 计算机指令概念,指令系统太复杂也会带来一些不利因素,为了解决这个问题,70年代末人们提出了便于VLSI实现的精简指令系统计算机,简称RISC;与之相应的便是复杂指令系统计算机,简称CISC。,5.2 指 令 格 式,计算机的指令格式与机器字长、存储器的容量以及指令的功能都有很大关系。为了便于程序设计、增加基本操作的并行性、增强指令功能,指令中包含的信息越多越好。然而如果所有指令都取相同长度的话,那么在有些指令中,一部分信息将是没有意义的,这就浪费了指令所占的存储空间,从而增加了访存次数,可能使整个指令执行时间更长。因此,如何科学合理地设计指令格式,使指令既能给出足够信息,其长度又尽可能与机器的字长相匹配,从而节省存储空间,缩短取指周期,达到提高机器性能的目的,一直是指令格式设计中的一个重要问题。,5.2 指 令 格 式,5.2.1 指令的一般格式 5.2.2 指令操作码的扩展技术 5.2.3 指令长度与字长的关系,5.2.1 指令的一般格式,计算机通过执行指令来处理各种数据。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息。 操作码 操作数的地址。 下一条指令的地址 根据上述分析可知,一条指令实际上包括两种信息,即操作码和地址码。 零地址指令,OP CODE,2. 一地址指令,3. 两地址指令,4. 三地址指令,5.2.1 指令的一般格式,5. 多地址指令 在某些性能较好的大、中型机甚至高档次小型机中,往往设置一些功能很强、用于处理成批数据的指令,如字符串处理指令,向量、矩阵运算指令。为了描述一批数据,指令中需要多个地址来指出数据存放的首地址、长度和下标等信息。 以上所述的几种指令只是一般情况,并非所有计算机都具有。零地址、一地址和两地址指令具有指令短、执行速度快、硬件实现简单等特点,多为结构较简单、字长较短的小型、微型机所采用;而两地址、三地址和多地址指令具有功能强、便于编程等特点,多为字长较长的大、中型机所采用。但也不能一概而论。,5.2.1 指令的一般格式,5.2.2 指令操作码的扩展技术,指令的操作码长度决定了指令系统中完成不同操作的指令条数。若某机器的操作码长度为K位,则它最多只能有2K条不同指令。指令操作码通常有两种编码格式,一种是固定格式,即操作码的长度固定,且集中放在指令字的一个字段中。这种格式对于简化硬件设计、减少指令译码时间非常有利,在字长较长的大、中型机和超级小型机以及RISC上广泛使用。另一种是可变格式,即操作码的长度可变,且分散地放在指令字的不同字段中。这种格式能够有效地压缩程序中操作码的平均长度,在字长较短的微型机上广泛采用。,5.2.2 指令操作码的扩展技术,显然,操作码长度不固定将增加指令译码和分析的难度,使控制器的设计复杂化,因此对操作码的编码至关重要。通常是在指令字中用一个固定长度的字段来表示基本操作码,而对于一部分不需要某个地址码的指令,则把它们的操作码扩展到该地址字段,这样,既能充分地利用指令字的各个字段,又能在不增加指令长度的情况下扩展操作码的长度,使它可以表示更多的指令。例如,设某机器的指令长度为16位,包括4位基本操作码字段和3个4位地址字段,其格式如图5-1所示。,图5-1 指令格式,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。,5.2.2 指令操作码的扩展技术,除了上述方法外,还有其他许多扩展方法,如可以形成15条三地址指令、14条两地址指令、31条一地址指令和16条零地址指令,共76条指令。实际上,指令操作码是有空余的。在可变长度的指令系统的设计中,到底使用何种扩展方法,所要遵循的一个重要原则是,使用频度(即指令在程序中出现的概率)高的指令应分配较短的操作码;使用频度低的指令应分配较长的操作码。这样,不仅可以有效地缩短操作码在程序中的平均长度,节省存储器空间,而且缩短了经常使用的指令的译码时间,因而可以提高程序的运行速度。,5.2.2 指令操作码的扩展技术,这里特别强调指出,计算机中的指令操作码总是希望有一定的规整性,否则会使硬件实现复杂化。此外,为了便于在计算机内存放,指令的长度一般是字节的整数倍,所以操作码与地址码两部分长度之和就应该是字节的整数倍,因此在考虑操作码长度时还应考虑地址码的要求。 由此可见,操作码扩展技术是一种重要的指令优化技术,它可以缩短指令的平均长度,减少程序的总位数以及增加指令字所能表示的操作信息。扩展操作码比固定操作码译码复杂,使控制器的设计难度增大,也需要更多的硬件来支持。,5.2.3 指令长度与字长的关系,字长是指计算机能直接处理的二进制数据的位数,它与计算机的功能和用途有很大的关系,是计算机的一个重要技术指标。首先,字长决定了计算机的运算精度,字长越长,计算机的运算精度越高,因此,高性能的计算机字长较长,而性能较差的计算机字长相对要短。其次,地址长度决定了指令直接寻址能力,若为n 位,则给出的n 位直接地址可以寻址2n字节。这对于字长较短(8位或16位)的微型机来说,远远满足不了实际需要。扩大寻址能力的方法,一是通过增加机器字长来增加地址码的长度;二是采用地址扩展技术,把存储空间分成若干个段,用基地址加位移量的方法来增加地址码的长度。,5.2.3 指令长度与字长的关系,为了便于处理字符数据和尽可能地充分利用存储空间,一般机器字长都是字节长度(即8位)的1、2、4或8倍,也就是8、16、32、64位。20世纪80年代的微型机的字长多为8、16和32位,大中型机的字长多为32位和64位,因此,一个字中可以存储1、2、4或8个字符。随着电路集成度的提高,机器字长也在增长,16位微机也趋于淘汰。 指令的长度主要取决于操作码的长度、操作数地址的长度和操作数地址的个数。由于操作码的长度、操作数地址的长度及所采用的格式不同,各指令的长度不是固定的,但也不是任意的。为了充分利用存储空间,指令的长度通常为字节的整数倍。,5.2.3 指令长度与字长的关系,指令的长度与机器的字长没有固定关系,它既可以小于或等于机器的字长,也可以大于机器字长。前者称为短格式指令,后者称为长格式指令,一条指令存放在地址连续的存储单元中。在同一台计算机中可能既有短格式指令,又有长格式指令,但通常是把最常用的指令(如算术逻辑运算指令、数据传送指令)设计成短格式指令,以便节省存储空间和提高指令的执行速度。,5.3 数据的表示和存储,计算机中的基本数据有逻辑(布尔)数、定点数(整数)、浮点数(实数)、十进制、字符串、数组等。对这些数据的运算可以设置专门的指令,也可以仅设置最简单的算术逻辑运算指令,再通过执行程序来实现对其他类型数据的处理,但后者的速度下降许多。在机器中,若设置能直接对矩阵向量数据(数组)进行运算的指令(增加相应的硬件),可以大大提高对向量(数组)的处理速度,这一般只在巨型计算机中才采用。 目前计算机所用的数据字长一般为32位,而存储器地址一般按字节表示,即一个存储单元只能存放一个字节的数据,因此一条指令通常要占用几个存储单元,使用几个存储器地址。,5.3 数据的表示和存储,计算机指令系统可支持对字节、半字、字、双字的运算,有些计算机有位处理指令。为便于硬件实现,一般要求多字节数据对准边界,如图5-2(a)所示。当所存数据不能满足此要求时,则填充一个或多个空白字节。也有的计算机不要求对准边界,但可能增加访问存储器次数。假如存储器与运算部件间数据通路的宽度为32位(一个字),在不按边界对准的计算机中,访存指令所要求存取的数据(例如一个字)可能在两个存储单元中,因此需要访问两次存储器,而且还要对高低字节的位置进行调整,图5-2(b)中的阴影部分即属这种情况。,(a) 多字节数据对准边界,图5-2 存储器中数据的存放举例,(b) 数据不对准边界,5.3 数据的表示和存储,在数据对准边界的计算机中,当以二进制来表示地址时,半字地址的最低位恒为零,字地址的最低两位为零,双字地址的最低三位为零。图5-3为按字节编址的双字数据的两种字节次序:低字节为低地址,如图5-3(a)所示;高字节为低地址,如图5-3(b)所示。,(a) 低字节为低地址,(b) 高字节为低地址,图5-3 两种字节次序,5.4 寻 址 方 式,在执行一条指令的时候,操作数可能在运算部件的某个寄存器中或存储器中,也可能就在本指令中。正在运行的程序总是存放在存储器(内存)中,正在执行的指令总是在CPU内控制器的指令寄存器中。所谓寻址方式(或编址方式)指的是确定本条指令的数据地址及下一条要执行的指令地址的方法,它与计算机硬件结构紧密相关,而且对指令格式和功能影响很大。从程序员角度看,寻址方式与汇编程序设计的关系极为密切;与高级语言的编译程序设计也同样密切。不同的计算机有不同的寻址方式,但其基本原理是相同的。有的计算机寻址种类少,因此在指令的操作码中表示出寻址方式;而有的计算,5.4 寻 址 方 式,机采用多种寻址方式,此时在指令中专设一个字段表示一个操作数的来源或去向。这里仅介绍几种被广泛采用的基本寻址方式。在一些计算机中,某些寻址方式可以组合使用,从而形成更复杂的寻址方式。,5.4 寻 址 方 式,1. 直接寻址 对直接寻址方式来说,指令的地址码部分直接给出操作数在存储器中的地址,图5-4(a)仅给出一个操作数地址;当有多个地址时,情况类似。直接寻址方式可以由操作码表示出来。图5-4(b)在指令中增加了一个寻址方式字段M,假如M为3位二进制码,则可表示8种寻址方式。,图5-4 直接寻址方式,5.4 寻 址 方 式,2. 寄存器寻址 计算机的中央处理器中一般设置有一定数量的通用寄存器,用以存放操作数、操作数的地址或中间结果。假如地址码部分给出某一通用寄存器地址,而且所需的操作数就在这一寄存器中,则称为寄存器寻址。通用寄存器的数量一般在几个至几十个之间,比存储单元少得多,因此地址码短,而且对寄存器存取数据比对存储器存取数据快得多,所以这种寻址方式可以缩短指令长度,节省存储空间,提高指令的执行速度,因而在计算机中得到广泛应用。,5.4 寻 址 方 式,3. 基址寻址 基址寻址是指在计算机中设置一个专用的基址寄存器,或由指令指定一个通用寄存器作为基址寄存器。操作数的地址由基址寄存器的内容和指令的地址码A相加得到,如图5-5所示。在这种情况下,地址码A通常被称为位移量(Disp)。也可用其他方法获得位移量。,图5-5 基址寻址过程,5.4 寻 址 方 式,4. 变址寻址 变址寻址的过程如图5-6所示。指令地址码部分给出的地址A和指定的变址寄存器R的内容通过加法器相加,所得的和作为地址从存储器中读出所需的操作数。这是几乎所有计算机都采用的一种寻址方式。如果计算机中还有基址寄存器,则在计算有效地址时还要加上基址寄存器内容。,图5-6 变址寻址过程,5.4 寻 址 方 式,5. 间接寻址 在寻址时,若根据指令的地址码所取出的内容是操作数的地址或指令地址,这种寻址方式就称为间接寻址或间址。根据地址码指的是寄存器地址还是存储器地址,间接寻址又可分为寄存器间接寻址和存储器间接寻址两种方式。间接寻址有一次间址和多次间址两种情况,大多数计算机只允许一次间址。对于存储器一次间址来说,需要访问两次存储器才能取得数据,第一次从存储器读出的是操作数的地址,第二次才读出操作数。,5.4 寻 址 方 式,图5-7(a)、(b)分别为寄存器间接寻址与存储器间接寻址的操作数寻址过程。图5-8以转移指令JUMP为例,说明在直接寻址和间接寻址方式下,如何确定下一条要执行的指令地址。,(a) 寄存器间接寻址,(b) 存储器间接寻址,图5-7 间接寻址过程,(a) 直接寻址,(b) 间接寻址,图5-8 确定JUMP指令的转移地址,5.4 寻 址 方 式,6. 相对寻址 把程序计数器PC的内容(即当前正在执行的指令地址)与地址码部分给出的位移量(Disp)之和作为操作数的地址或转移地址,称为相对地址。主要用于转移指令,执行本条指令之后,将转移到(PC)+Disp,(PC)表示程序计数器的内容。相对寻址有两个特点:第一,转移地址不是固定的,它随着PC值的变化而变化,并且总是相差一个固定值Disp,因此无论程序装入存储器的任何地方,均能正确运行,对浮动程序很适用。第二,位移量可正可负,通常用补码表示。若位移量为n位,则这种方式的寻址范围在到之间。,5.4 寻 址 方 式,当前计算机的程序和数据一般是分开存放的,程序区在程序执行过程中不允许修改。在程序与数据分区存放的情况下,不用相对寻址方式来确定操作数地址。 7. 立即数 所需的操作数由指令的地址码部分直接给出,就称为立即数(或直接数)寻址方式。这种方式的特点是,取指时操作码和一个操作数同时被取出,不必再次访问存储器,提高了指令的执行速度。但是由于这一操作数是指令的一部分,不能修改,而一般情况下,指令所处理的数据都是在不断变化的(如上条指令执行的结果是下条指令的操作数),故这种方式只能适用于操作数固定的情况。通常用于给某一寄存器或存储器单元赋初值或提供一个常数。,5.5 指 令 类 型,一台计算机的指令系统通常有几十条至几百条指令,按其所完成的功能可分为算术逻辑运算指令、移位操作指令、浮点运算指令、十进制运算指令、字符串处理指令、向量运算指令、数据传送指令、转移类指令、堆栈操作指令、输入/输出指令、特权指令。本节分别说明各类指令的功能。,5.5 指 令 类 型,1. 算术逻辑运算指令 一般计算机都有算术逻辑运算指令。通常计算机具有对两个数进行与、或、非(求反)、异或(按位加)等操作的逻辑运算指令。有些计算机还设置有位操作指令,如位测试(测试指定位的值)、位清除(把指定位清零)、位求反(取某位的反值)指令等。 2. 移位操作指令 移位操作指令分为算术移位、逻辑移位和循环移位3种,可以将操作数左移或右移若干位,如图5-9所示。,图5-9 各种移位的操作过程,5.5 指 令 类 型,3. 浮点运算指令 高级语言中的实数(Real)经常是先转换成浮点数的形式再进行处理。某些机器没有设置浮点运算指令而用子程序实现,其速度较低。因此主要用于科学计算的计算机应该设置浮点运算指令,一般能对单精度(32位)、双精度(64位)数据进行处理。 4. 十进制运算指令 在人机交互作用时,输入/输出的数据都是以十进制形式表示的。在某些数据处理系统中输入/输出的数据很多,但对数据本身的处理却很简单。在不具有十进制运算指令的计算机中,首先将十进制数转换成二进制数,再在机器内运算;而后又转换成十进制数据输出。在输入/输出频繁的计算机系统中,设置十进制运算指令能提高数据处理的速度。,5.5 指 令 类 型,5. 字符串处理指令 字符串处理指令是一种非数值数据的处理指令,一般包括字符串传送、字符串比较、字符串查询、字符串转换等指令。其中,字符串传送指令所完成的操作是将数据块从主存储器的某区域传送到另一区域;字符串比较指令所完成的操作是将一个字符串与另一个字符串逐个字符进行比较,以确定其是否相等;字符串查询是查找在字符串中是否含有另一指定的子串或字符;字符串转换是指将一种数据表达形式转换成另一种表达形式,例如从ASCII码转换成EBCDIC码(扩充的二-十进制交换码)。这种指令在需对大量字符串进行各种处理的文字编辑和排版方面非常有用。,5.5 指 令 类 型,6. 数据传送指令 数据传递指令用以实现寄存器与寄存器、寄存器与存储器单元、存储器单元与存储器单元之间的数据传送。对于存储器来讲,数据传送包括了对数据的读(相当于取数指令)或写(相当于存数指令)操作。数据传送时,数据从源地址传送到目的地址,而源地址中的数据保持不变,因此实际上是数据复制。 7. 转移类指令 转移类指令用以控制程序流的转移。在大多数情况下,计算机是按顺序方式执行程序的,但是也经常会遇到离开原来的顺序转移到另一段程序或循环执行某段程序的情况。,5.5 指 令 类 型,按转移的性质,转移指令分为无条件转移、条件转移、过程调用与返回、陷阱(Trap)等几种。 1)无条件转移与条件转移 2)调用指令与返回指令 3)陷阱与陷阱指令 8.堆栈及堆栈操作指令 堆栈(Stack)是由若干个连续存储单元组成的先进后出(FILO)存储区,第一个送入堆栈中的数据存放在栈底,最近送入堆栈中的数据存放在栈顶。栈底是固定不变的,而栈顶却是随着数据的入栈和出栈在不断变化。为了表示栈顶的位置,有一个寄存器或存储器单元用于指出栈顶的地址,这个寄存器或存储器单元就称为堆栈指针SP(Stack Pointer)。任何堆栈操作只能在栈顶进行。,5.5 指 令 类 型,压入指令 PUSH OPR 把OPR(长度为两个字节)压入堆栈 操作是:(SP)-2SP,OPR(SP) 弹出指令 POP OPR 弹出一个数据(长度为两个字节)送OPR 操作是:(SP)OPR,(SP)+2SP 由于堆栈具有先进后出的性质,因而在中断、子程序调用过程中广泛用于保存返回地址、状态标志及现场信息。 堆栈还有一个重要的作用,就是用于子程序调用时参数的传递,特别是在不同语言程序之间相互调用过程中,使用堆栈来传递数据更加普遍。,5.5 指 令 类 型,9. 输入/输出(I/O)指令 计算机所处理的一切原始数据和所执行的程序(除了固化在ROM中的以外)均来自外部设备的输入,处理结果需要外部设备输出。输入/输出指令的一般格式是OP REG A。其中,OP是操作码,表示I/O指令。REG是寄存器名,用于指定与外部设备交换数据的CPU中的某寄存器。A是外部设备接口中的寄存器地址或设备码,其长度一般为8位或16位,可以表示25664K个设备寄存器(接口中有3类寄存器,即输入数据寄存器、输出数据寄存器和控制寄存器)。输入指令用于从A地址所指定的外部设备寄存器中读入一个数据到REG寄存器中;输出指令刚好相反,把REG寄存器中的数,5.5 指 令 类 型,据送到A地址所指定的外部设备寄存器中。此外,I/O指令还可用来发送控制命令和接收回答信号,用以控制外部设备的工作。 10. 特权指令 某些指令使用不当会破坏系统或其他用户信息,因此为了安全起见,这类指令只能用于操作系统或其他系统软件,而不提供给用户使用,称为特权指令。 11. 其他指令 其他指令包括向量指令、多处理机指令和控制指令。控制指令包括等待指令,停机指令,空操作指令,开中断、关中断、置条件码指令。,5.6 指令系统举例,下面通过几种类型计算机指令系统的介绍来增加认识,这些计算机(或处理器)是Sun微系统公司的SPARC90(RISC)、IBM 360/370系列(CISC)、PDP 11/VAX 11(CISC)系列,Intel公司的Pentium 系列(基于RISC的处理器内核)。,5.6 指令系统举例,5.6.1 SPARC的指令系统 5.6.2 IBM大型机指令系统 5.6.3 PDP 11与VAX 11基本指令格式 5.6.4 Pentium 的指令系统,5.6.1 SPARC的指令系统,SPARC指令字长32位,有3种指令格式、6种指令类型。 1SPARC的指令类型 1)算术运算/逻辑运算/移位指令 加法指令4条:ADD、ADDCC、ADDX、ADDXCC。 减法指令4条:SUB、SUBCC、SUBX、SUBXCC。 检查标记的加法指令2条:TADDCC、TADDCCTV。 检查标记的减法指令2条:TSUBCC、TSUBCCTV。 逻辑运算指令共12条:AND、ANDCC、ANDN、ANDNCC;OR、ORCC、ORN、ORNCC;XOR、XORCC、XORN、XORNCC。,5.6.1 SPARC的指令系统,移位指令3条:SLL(逻辑左移)、SRL(逻辑右移)、SRA(算术右移)。 其他还有乘法步、SETHI、SAVE、RESTORE等。SAVE和RESTORE两条指令分别将现行窗口指针减1和加1。 现在对4条加法指令进行说明。以CC结尾的加法指令表示除了进行加法运算以外还要根据运算结果置状态触发器N、Z、V、C;X表示加进位信号;XCC表示加进位信号并置N、Z、V、C。 2)LOAD/STORE指令 取/存字节(LDSB/STB)、半字、字、双字共20条指令,其中一半是特权指令。,5.6.1 SPARC的指令系统,SPARC结构将存储器分成若干区,其中有4个区分别为用户程序区、用户数据区、系统程序区和系统数据区。并规定在执行用户程序时,只能从用户程序区取指令,在用户数据区存取数据;而执行系统程序时则可以使用特权指令访问任一区。 另外还有两条供多处理机系统使用的数据交换指令SWAP和读后置字节指令LDSTUB。 3)控制转移类指令5条。 4)读/写专用寄存器指令8条。 以上指令共计66条。 5)浮点运算指令。 6)协处理器指令。,5.6.1 SPARC的指令系统,由于SPARC为整数运算部件(IU),所以当执行浮点运算指令或协处理器指令时,将交给浮点运算器或协处理器处理,当机器没有配置这种部件时,将通过子程序实现。 2SPARC的指令格式,格式1:CALL指令,格式2:SETHI指令和BRANCH指令,5.6.1 SPARC的指令系统,格式3:其他指令,3. 各类指令的功能及寻址方式 下面简单介绍第一类至第四类指令。 1)算术逻辑运算指令 功能:(rs1)OP(rs2) rd (当i=0时) (rs1) OP Simm13 rd (当i=1时) RISC的特点之一是所有参与算术逻辑运算的数均在寄存器中。,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字段(条件码)决定程序是否转移。转移地址由相对寻址方式形成。,5.6.1 SPARC的指令系统,(2)转移并连接(JMPL):采用寄存器间址方式形成转移地址,并将本条指令的地址(即PC值)保存在以rd为地址的寄存器中,以备程序返回时用。 (3)调用(CALL):采用相对寻址方式形成转移地址。为了扩大寻址范围,本条指令的操作码只取两位,位移量有30位。 (4)陷阱(TRAP):采用寄存器间址方式形成转移地址。 (5)从TRAP程序返回(RETT):采用寄存器间址方式形成返回地址。 4)读/写专用寄存器指令 SPARC有4个专用寄存器(PSR、Y、WIM、TBR),其中PSR称为程序状态寄存器。,5.6.2 IBM大型机指令系统,现在简单介绍IBM 360/370的结构及指令系统。IBM 360是32位机器,按字节寻址,支持的数据类型有字节、半字、字、双字(双精度实数)、装配的十进制数(用4位二进制码表示一个十进制数,一个字节放两个十进制数字)和未经装配(拆卸)的字符串(一个字节放一个字符)。机内有16个32位通用寄存器,4个双精度(64位)浮点寄存器。 IBM 360/370有5种指令格式,如图5-10所示。,图5-10 IBM 360/370 指令格式,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(存储器-存储器):两个操作数都在存储器,5.6.2 IBM大型机指令系统,中,其地址分别为(B1)+D1和(B2)+D2,(B1)+ D1还是目的地址。SS格式用于十进制运算与字符串处理,数据长度(Length)字段可定义为1个长度(1256个字符)或两个长度(每一个为116个十进制数)。,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位)处理。,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的单操作数指令与双操作数指令为例,对它们的指令格式与寻址方式作简单介绍。,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)等。,5.6.3 PDP 11与VAX 11基本指令格式,2.双操作数指令,指令格式:,第1512位表示操作码。第116位组成一个6位字段,为源地址字段(第一操作数);第50位组成另一个6位字段,既是源操作数字段(第二操作数),也是目的操作数字段。 双操作数指令有传送(MOV)、加(ADD)、减(SUB)、比较(CMP)、按位加(XOR)、逻辑加(BIS)等。,5.6.3 PDP 11与VAX 11基本指令格式,3. 转移指令,指令格式:,转移地址=PC+2位移量,4. 寻址方式 这里只讲述单操作数指令与双操作数指令的寻址方式。 1)直接寻址 表5-1列出了直接寻址的4种基本方式。现以ADD指令为例,来说明寻址方式。,表5-1 直接寻址方式,5.6.3 PDP 11与VAX 11基本指令格式,(1) ADD R2,R4,操作:R2内容加到R4的内容上。 例: 操 作 前 操 作 后,5.6.3 PDP 11与VAX 11基本指令格式,(2)ADD(R2)+,R4 指令代码062204 操作:R2内容为操作数地址,将此操作数加到R4的内容上,然后R2的内容加2。 例: 操作前 操作后,5.6.3 PDP 11与VAX 11基本指令格式,(3)ADD-(R3),R0 指令代码064300 操作:R3内容减2后作为操作数地址,将此操作数加到R0的内容上。 例: 操作前 操作后,5.6.3 PDP 11与VAX 11基本指令格式,(4)ADD 30(R2),20(R5) 指令代码066265 操作:R2内容加30(加和是001130)作为源操作数地址,R5内容加20(加和是002020)作为另一源操作数和目的操作数地址,两个操作数相加后,结果(加和是000002)存放在目的地址(002020)中。 例: 操作前 操作后,5.6.3 PDP 11与VAX 11基本指令格式,2)间接寻址 表5-2列出了间接寻址的4种方式。间接寻址方式类似于相应的直接寻址方式,这里仅举两例说明。,表5-2 间接寻址方式,5.6.3 PDP 11与VAX 11基本指令格式,(1)ADD (R2),R1 指令代码061201 ADD R2,R1 操作前 操作后,5.6.3 PDP 11与VAX 11基本指令格式,(2) 变址间接方式 ADD 1000(R2),R1 指令代码067201 当PC作为通用寄存器时,表5-1和表5-2中列出的寻址方式仍适用,特别是表5-3中所列出的几种情况有特殊的效果。,表5-3 PC作为通用寄存器的特殊寻址方式,5.6.3 PDP 11与VAX 11基本指令格式,操作前 操作后,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所示。,图5-11 Pentium 的指令格式,5.6.4 Pentium 的指令系统,(1)前缀字节:前缀字节是一个额外的操作码,它附加在指令的最前面,用于改变指令的操作。 (2)操作码字节:操作码的最低位用于指示操作数是字节还是字,次低位用于指示内存地址(若需要访问内存的话)是源地址还是目的地址。 (3)模式字节:模式字节包含了与操作数有关的信息。该字节可分为2位的MOD字段及两个3位的寄存器字段REG和R/M。在某些情况下,模式字节的前3位可用做操作码扩展,这时操作码的长度就是11位。,5.6.4 Pentium 的指令系统,Pentium 指令系统规定操作数中必须有一个是在寄存器中。模式字段MOD与R/M字段组合定义另一个操作数的寻址方式,REG字段规定了另一个操作数所在的寄存器。 从逻辑上来说,EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP中的任意一个都可以用于源操作数寄存器和目的操作数寄存器。但是编码规则禁止了其中的某些组合,而把它们用于特殊的目的。,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个字节的常量。,5.6.4 Pentium 的指令系统,2Pentium 的寻址方式 Pentium 具有很大的地址空间,采用了段页式存储管理模式,即将内存分为16 384个段,每个段的容量为4GB,按0232-1进行编址,地址长度为32位,按照小端排序(低位地址存放在低位字节)的方式存储字。 Pentium 配备了大量的寄存器,包括基本体系结构寄存器、系统级寄存器、调试和测试寄存器、浮点寄存器等,其中32位的通用寄存器不仅可用于处理32位的数据,还可用于处理16位和8位数据,以满足用户的不同要求。,5.6.4 Pentium 的指令系统,为了满足向下兼容的要求,Pentium 的寻址方式非常没有规律,它支持的寻址方式包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、基址加变址寻址、相对寻址和用于数组元素的特殊寻址方式。当然,并不是所有的指令都具有所有的寻址方式,也不是所有的寄存器都能用于所有的寻址方式。表5-4给出了32位模式下的寻址方式。,表5-4 Pentium 的32位寻址方式(Mx表示x处的内存字),5.6.4 Pentium 的指令系统,3Pentium 的指令类型 Pentium 指令系统包括如下指令类型:数据传送类指令,算术运算类指令,逻辑运算类及位处理指令,字符串操作类指令,程序控制类指令,系统寄存器、表控制类指令,系统和Cache控制类指令,MMX(Multi-Media Extension)指令集。 由于Pentium 的指令系统比较庞大,这里就不具体列出了,需要时可参看有关资料。 4Pentium 的指令前缀 Pentium 的指令前缀是可以放在大多数指令之前的一个特殊字节,用于控制指令的执行过程。例如:,5.6.4 Pentium 的指令系统,REP 前缀表示重复执行指令,直到ECX变成0。 REPZ 前缀表示重复执行指令,直到条件码Z 变为1。 REPNZ 前缀表示重复执行指令,直到条件码Z 变为0。 LOOK 前缀为整条指令保留总线,以允许多处理机同步。 还有一些指令前缀可以使指令运行于16位模式或者32位模式下。这些指令前缀不仅需要指令改变操作数的长度,而且需要彻底地重新定义操作数的寻址方式。,5.7 机器语言、汇编语言和高级语言,计算机能够直接识别并执行的语言只能是一种用二进制码表示的、由一系列指令组成的机器语言。因此,对于任何一个要解决的问题来说,不管使用哪一种计算机语言(汇编语言或高级语言)描述,都必须通过翻译程序转换成相应的机器语言才能执行。 机器语言存在可读性差、不容易编程和不容易维护等许多缺陷,这就给编写程序造成了许多困难。我们可以用预先规定的符号来分别替代二进制码表示的操作码、操作数或地址,用便于记忆的符号而不是二进制码来编写程序要方便得多。,5.7 机器语言、汇编语言和高级语言,例:设有两个8字节数已分别放在双字变量FIRS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论