《指令系统2015学习.pptx》由会员分享,可在线阅读,更多相关《指令系统2015学习.pptx(100页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章 指令和指令系统是计算机中最基本的概念。指令是指示计算机执行某些操作的命令,一台计算机的所有指令的集合构成该机的指令系统,也称指令集。指令系统是计算机的主要属性,位于硬件和软件的交界面上。本章将讨论一般计算机的指令系统所涉及的基本问题。第1页/共100页第3章裸机软件指令系统第2页/共100页第3章3.1指令格式3.2寻址技术3.3堆栈与堆栈操作3.4指令类型3.5指令系统的发展 第3页/共100页3.1 指令格式机器指令的基本格式 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。指令的基本格式如下:操作码字段地址码字段操作码:指明操作的性质及功能。操作码 地址码:指明操作数
2、的地址,特殊情况下也可能直接给出操作数本身。地址码注意第4页/共100页3.1指令格式指令的长度是指一条指令中所包含的二进制代码的位数,它取决于操作码字段的长度、操作数地址的个数及长度。指令长度应:尽可能短等于字节的整数倍指令长度可以等于机器字长,也可以大于或小于机器字长。在一个指令系统中,若所有指令的长度都是相等的,称为定长指令字结构;若各种指令的长度随指令功能而异,称为变长指令字结构。第5页/共100页3.1指令格式地址码结构一条双操作数指令的除操作码之外,还应包含以下信息:第一操作数地址,用A1表示;第二操作数地址,用A2表示;操作结果存放地址,用A3表示;下条将要执行指令的地址,用A4
3、表示。这些信息可以在指令中明显的给出,称为显地址;也可以依照某种事先的约定,用隐含的方式给出,称为隐地址。下面以双操作数指令为例讨论地址码结构。第6页/共100页3.1指令格式1.四地址指令OPA1A2A3A4 (A1)OP(A2)A3 A4=下条将要执行指令的地址538+10020030040010020030050100200300400指令下一指令53指令 5 3 8下一指令400+第7页/共100页10020030050指令下一指令53513.1指令格式2.三地址指令OPA1A2A3(A1)OP(A2)A3(PC)+1=下条将要执行指令的地址程序计数器:存放当前指令地址指令 5 3 8
4、下一指令+100200300538+执行一条三地址指令需4次访问主存。100200300 +第8页/共100页(A1)OP(A2)A13.1指令格式3.二地址指令OPA1A2(PC)+1=下条将要执行指令的地址 A1中原存内容在指令执行后被破坏。目的操作数地址源操作数地址 执行一条二地址指令需4次访问主存。10020030050指令下一指令5351指令 5 3 8下一指令+100200538+100200+第9页/共100页(Acc)OP(A1)Acc3 3.1 指令格式4.一地址指令OPA1(PC)+1=下条将要执行指令的地址累加寄存器 执行一条一地址指令需2次访问主存。1002003005
5、0指令下一指令351指令 3下一指令+100538+100+第10页/共100页3.1指令格式5.零地址指令OP 操作数地址是隐含的。参加运算的操作数放在堆栈中,运算结果也放在堆栈中。有关堆栈的概念将在稍后讨论。第11页/共100页3.1指令格式 指令中地址个数的选取要考虑诸多的因素。从缩短程序长度,用户使用方便,增加操作并行度等方面来看,选用三地址指令格式较好;从缩短指令长度,减少访存次数,简化硬件设计等方面来看,一地址指令格式较好。对于同一个问题,用三地址指令编写的程序最短,但指令长度最长,而用二、一、零地址指令来编写程序,程序的长度一个比一个长,但指令的长度一个比一个短。注意第12页/共
6、100页3.1指令格式指令的操作码指令系统中的每一条指令都有一个唯一确定的操作码,指令不同,其操作码的编码也不同。为了能表示整个指令系统中的全部指令,指令的操作码字段应当具有足够的位数。指令操作码的编码可以分为规整型和非规整型两类:规整型(定长编码)非规整型(变长编码)注意第13页/共100页3.1指令格式1.规整型操作码字段的位数和位置是固定的。假定:指令系统共有m条指令,指令中操作码字段的位数为N位,则有如下关系式:Nlog2mIBM370机(字长32位)的指令可分为三种不同的长度形式:半字长指令、单字长指令和一个半字长指令。不论指令的长度为多少位,其中操作码字段一律都是8位,8位操作码字
7、段允许容纳256条指令,实际上在IBM370机中仅有183条指令。第14页/共100页2012.10第15页/共100页3.1指令格式第16页/共100页3.1指令格式定长编码对于简化硬件设计,减少指令译码的时间是非常有利的,存在着信息冗余。第17页/共100页3.1指令格式2.非规整型操作码字段的位数不固定,且分散地放在指令字的不同位置上。PDP-11机(字长16位)的指令分为单字长、两字长、三字长三种,操作码字段占416位不等,可遍及整个指令长度。操作码字段的位数和位置不固定将增加指令译码和分析的难度,使控制器的设计复杂化。第18页/共100页3.1指令格式第19页/共100页3.1指令格
8、式最常用的非规整型编码方式是扩展操作码法:让操作数地址个数多的指令(如三地址指令)的操作码字段短些,操作数地址个数少的指令(如一或零地址指令)的操作码字段长些。注意第20页/共100页3.1指令格式例如:设某机的指令长度为16位,操作码字段为4位,有三个4位的地址码字段,其格式为:如果按照定长编码的方法,4位操作码字段最多只能表示16条不同的三地址指令。OPA1A2A34位4位4位4位第21页/共100页3.1指令格式OPA1A2A34位4位4位4位OP15条三地址指令0000 XXXX YYYY ZZZZ1110 XXXX YYYY ZZZZ111115条二地址指令1111 0000 XXX
9、X YYYY1111 1110 XXXX YYYY1111 111115条一地址指令1111 1111 0000 XXXX1111 1111 1110 XXXX1111 1111 111116条零地址指令1111 1111 1111 00001111 1111 1111 1111扩展窗口扩展窗口扩展窗口OPA1A2OPA1OP第22页/共100页3.1指令格式 以下两点要注意:不允许短码是长码的前缀,即短码不能与长码的开始部分的代码相同,否则将无法保证解码的唯一性和实时性。各条指令的操作码一定不能重复雷同,而且各类指令的格式安排应统一规整。第23页/共100页第3章3.1指令格式3.2寻址技术
10、3.3堆栈与堆栈操作3.4指令类型3.5指令系统的发展 第24页/共100页2012.103.2寻址技术寻址,指的是寻找操作数的地址或下一条将要执行的指令地址。寻址技术包括编址方式和寻址方式。第25页/共100页3.2寻址技术编址方式1.编址通常,指令中的地址码字段将指出操作数的来源和去向,而操作数则存放在相应的存储设备中。在计算机中需要编址的设备主要有CPU中的通用寄存器、主存储器和输入输出设备等3种。第26页/共100页3.2寻址技术2.编址单位(1)字编址编址单位=访问单位每个编址单位所包含的信息量(二进制位数)与读或写一次寄存器、主存所获得的信息量是相同的。早期的大多数机器都采用这种编
11、址方式。第27页/共100页3.2寻址技术(2)字节编址字节编址是为了适应非数值计算的需要。字节编址方式使编址单位与信息的基本单位(一个字节)相一致,这是它的最大优点。然而,如果主存的访问单位也是一个字节的话,那么主存的频带就太窄了。编址单位访问单位通常主存的访问单位是编址单位的若干倍。(3)位编址也有部分计算机系统采用位编址方式。第28页/共100页3.2寻址技术3.指令中地址码的位数指令格式中每个地址码的位数是与主存容量和最小寻址单位(即编址单位)有关联的。主存容量越大,所需的地址码位数就越长。对于相同容量来说,如果以字节为最小寻址单位,地址码的位数就需要长些;如果以字为最小寻址单位(假定
12、字长为16位或更长),地址码的位数可以减少。设某机主存容量为220个字节,机器字长32位。若最小寻址单位为字节(按字节编址),其地址码应为20位;若最小寻址单位为字(按字编址),其地址码只需18位。第29页/共100页3.2寻址技术数据寻址和指令寻址寻址可以分为数据寻址和指令寻址。寻找操作数的地址称为数据寻址,数据寻址方式较多,其最终目的都是寻找所需要的操作数。寻找下一条将要执行的指令地址称为指令寻址,指令寻址比较简单,它又可以细分为顺序寻址和跳跃寻址。注意第30页/共100页3.2寻址技术顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址;跳跃寻址则需要通过程序转移类指令实现。跳跃寻
13、址的转移地址形成方式有三种:直接(绝对)、相对和间接寻址,它与下面介绍的数据寻址方式中的直接、相对和间接寻址是相同的,只不过寻找到的不是操作数的有效地址而是转移的有效地址而已。第31页/共100页3.2寻址技术基本的数据寻址方式寻址方式是根据指令中给出的地址码字段寻找真实操作数地址的方式。指令中的形式地址A有效地址EA寻址方式OP立即数 在取指令时,操作码和操作数被同时取出,不必再次访问存储器,从而提高了指令的执行速度。但是,因为操作数是指令的一部分,不能被修改,且立即数的大小将受到指令长度的限制。1.立即寻址第32页/共100页3.2寻址技术2.寄存器寻址指令中地址码部分给出某一通用寄存器的
14、编号,所指定的寄存器中存放着操作数。两个明显的优点:从寄存器存取数据比主存快得多;由于寄存器的数量较少,其地址码字段比主存单元地址字段短得多。操作数OP指令寄存器 通用寄存器RiR5操作数S=(Ri)操作数EA=RiR5第33页/共100页操作数OP指令寄存器主存储器A3.2寻址技术3.直接寻址指令中地址码字段给出的地址A就是操作数的有效地址:EA=A由于操作数地址是不能修改的,与程序本身所在的位置无关,所以又叫做绝对寻址方式。操作数100操作数S=(A)100第34页/共100页3.2寻址技术4.间接寻址指令中给出的地址A不是操作数的地址,而是存放操作数地址的地址。EA=(A)通常在指令格式
15、中划出一位作为标志位。=0直接寻址=1间接寻址操作数EAOP指令寄存器主存储器A操作数 100操作数S=(A)100200200第35页/共100页3.2寻址技术间接寻址要比直接寻址灵活得多,它的主要优点为:扩大了寻址范围,可用指令的短地址访问大的主存空间。可将主存单元作为程序的地址指针,用以指示操作数在主存中的位置。当操作数的地址需要改变时,不必修改指令,只需修改存放有效地址的那个主存单元(间接地址单元)的内容就可以了。第36页/共100页3.2寻址技术除去一级间接寻址外,还有多级间接寻址。多级间接寻址为取得操作数需要多次访问主存,即使在找到操作数有效地址后,还需再访问一次主存才可得到真正的
16、操作数。多级间接标志:0:找到有效地址1:继续间接寻址EAOP指令寄存器主存储器A110二级间址三级间址操作数100操作数1 2001 3000 5010020030050第37页/共100页EAOP指令寄存器主存储器Ri操作数 通用寄存器3.2寻址技术5.寄存器间接寻址指令中的地址码给出某一通用寄存器的编号,被指定的寄存器中存放操作数的有效地址,而操作数则存放在主存单元中。这种寻址方式的指令较短,并且在取指后只需一次访存便可得到操作数。操作数操作数S=(Ri)100R5EA=(Ri)R5100第38页/共100页3.2寻址技术6.变址寻址把指令给出的形式地址A与变址寄存器RX的内容相加,形成
17、操作数有效地址:EA=A+(RX)RX的内容为变址值。120OP指令寄存器主存储器A操作数RX变址值XALU变址寄存器RX操作数10020操作数S=(A+(RX)第39页/共100页3.2寻址技术变址寻址是一种广泛采用的寻址方式,通常指令中的形式地址作为基准地址,而RX的内容作为修改量。在遇到需要频繁修改地址时,无须修改指令,只要修改变址值就可以了。例如:要把一组连续存放在主存单元中的数据(首地址是A)依次传送到另一存储区(首地址为B)中去,则只需在指令中指明两个存储区的首地址A和B(形式地址),用同一变址寄存器提供修改量K,即可实现(A+K)B+K。变址寄存器的内容在每次传送之后自动地修改。
18、第40页/共100页3.2寻址技术7.基址寻址将基址寄存器Rb的内容与位移量D相加,形成操作数有效地址:EA=(Rb)+D基址寄存器的内容称为基址值,指令的地址码字段是一个位移量,位移量可正可负。OP指令寄存器主存储器D操作数Rb基址值ALU基址寄存器Rb120操作数20100操作数S=(Rb)+D)第41页/共100页3.2寻址技术基址寻址和变址寻址在形成有效地址时所用的算法是相同的,而且在一些计算机中,这两种寻址方式都是由同样的硬件来实现的。但这两种寻址方式应用的场合不同,变址寻址是面向用户的,用于访问字符串、向量和数组等成批数据;而基址寻址面向系统,主要用于逻辑地址和物理地址的变换,用以
19、解决程序在主存中的再定位和扩大寻址空间等问题。在某些大型机中,基址寄存器只能由特权指令来管理,用户指令无权操作和修改。第42页/共100页操作数操作数OP指令寄存器主存储器D指令指令地址ALU程序计数器PC-D+D3.2寻址技术8.相对寻址相对寻址是基址寻址的一种变通,由程序计数器PC提供基准地址,即:EA=(PC)+D位移量指出的是操作数和现行指令之间的相对位置。120操作数20100操作数S=(PC)+D)100-20 E0操作数第43页/共100页3.2寻址技术相对寻址方式的特点:操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值 D。当指令地址改变时
20、,由于其位移量不变,使得操作数与指令在可用的存储区内一起移动,所以仍能保证程序的正确执行。采用PC相对寻址方式编写的程序可在主存中任意浮动,它放在主存的任何地方,所执行的效果都是一样的。由于指令中给出的位移量可正、可负,所以对于指令地址而言,操作数地址可能在指令地址之前或之后。第44页/共100页3.2寻址技术9.页面寻址 页面寻址相当于将整个主存空间分成若干个大小相同的区,每个区称为一页,每页有若干个主存单元。每页都有自己的编号,称为页面地址;页面内的每个主存单元也有自己的编号,称为页内地址。这样,操作数的有效地址就被分为两部分:前部为页面地址,后部为页内地址。页内地址页面地址第45页/共1
21、00页3.2寻址技术页内地址由指令的地址码A自动直接提供,它与页面地址通过简单的拼装连接就可得到有效地址。根据页面地址的来源不同,有三种不同的页面寻址:64KB0页1页2页255页0000255255255255页内地址(8位)页面地址(8位)64KB0页1页2页511页0000127127127127页内地址(7位)页面地址(9位)页内地址(9位)页面地址(7位)64KB0页1页2页127页0000511511511511第46页/共100页指令寄存器主存储器OPA0页1页N-1页指令所在页0页操作数0页3.2寻址技术(1)基页寻址(零页寻址)。由于页面地址等于全0,所以有效地址EA=0A(
22、在这里表示简单拼接),操作数S在零页面中。A页内地址页面地址EA操作数3800000000000000000000380038255页64K第47页/共100页指令寄存器主存储器OPA0页1页N-1页指令所在页指令所在页操作数PCHPCLPCH程序计数器3.2寻址技术(2)当前页寻址。页面地址就等于程序计数器PC的高位部分,所以有效地址EA=(PC)HA,操作数S与指令本身处于同一页面中。页内地址页面地址EA操作数APCH操作数38382F852F2F38255页64K511页2FB8第48页/共100页3.2寻址技术(3)页寄存器寻址。页面地址取自页寄存器,与形式地址相拼接形成操作数有效地址
23、:EA=(页寄存器)A有些计算机在指令格式中设置了一个页面标志位(Z/C)。当Z/C=0,表示零页寻址,当Z/C=1,表示当前页寻址。第49页/共100页各种数据寻址方式获得数据的速度(由快到慢)立即寻址寄存器寻址直接寻址寄存器间接寻址页面寻址变址寻址(基址寻址、相对寻址)一级间接寻址多级间接寻址 3.2寻址技术注意第50页/共100页3.2寻址技术为了能区分出各种不同寻址方式,必须在指令中给出标识。标识的方式通常有两种:显式和隐式。显式的方法就是在指令中设置专门的寻址方式(MOD)字段,用二进制代码来表明寻址方式类型。隐式的方式是由指令的操作码字段说明指令格式并隐含约定寻址方式。AMODOP
24、显式AOP隐式第51页/共100页3.2寻址技术注意,一条指令若有两个或两个以上的地址码时,各地址码可采用不同的寻址方式。例如,源地址采用一种寻址方式,而目的地址采用另一种寻址方式。MOVAX,(BX)寄存器直接寻址寄存器间接寻址第52页/共100页第3章3.1 指令格式3.2寻址技术3.3堆栈与堆栈操作3.4指令类型3.5指令系统的发展 第53页/共100页3.3堆栈与堆栈操作堆栈是一种按特定顺序进行存取的存储区,这种特定顺序可归结为“后进先出”(LIFO)或“先进后出”(FILO)。第54页/共100页3.3堆栈与堆栈操作堆栈结构1.寄存器堆栈用一组专门的寄存器构成寄存器堆栈,又称为硬堆栈
25、。这种堆栈的栈顶是固定的,寄存器组中各寄存器是相互连接的,它们之间具有对应位自动推移的功能,即可将一个寄存器的内容推移到相邻的另一个寄存器中去。第55页/共100页3.3堆栈与堆栈操作第56页/共100页3.3堆栈与堆栈操作2.存储器堆栈从主存中划出一段区域来作堆栈,这种堆栈又称为软堆栈,堆栈的大小可变,栈底固定,栈顶浮动,故需要一个专门的硬件寄存器作为堆栈栈顶指针SP,简称栈指针。栈指针所指定的主存单元,就是堆栈的栈顶。高地址低地址堆栈区自底向上生成方式的堆栈第57页/共100页3.3堆栈与堆栈操作堆栈的栈底地址大于栈顶地址,通常栈指针始终指向栈顶的满单元。进栈时,SP的内容需要先自动减1,
26、然后再将数据压入堆栈。20001FFF(SP)-1SP 修改栈指针(A)(SP)将A中的数据压入堆栈SP2000A2000原栈顶单元现栈顶单元1FFF注意第58页/共100页3.3堆栈与堆栈操作出栈时,需要先将堆栈中的数据弹出,然后SP的内容再自动加1。2000(SP)A 将栈顶内容弹出,送入A中(SP)+1SP 修改栈指针SP1FFFA1FFF原栈顶单元现栈顶单元1FFF2000注意第59页/共100页3.3堆栈与堆栈操作堆栈操作在一般计算机中,堆栈主要用来暂存中断断点、子程序调用时的返回地址、状态标志及现场信息等,也可用于子程序调用时参数的传递,所以用于访问堆栈的指令只有进栈(压入)和出栈
27、(弹出)两种。在堆栈计算机(如HP-3000、B5000等)中,没有一般计算机中必备的通用寄存器,因此堆栈就成为提供操作数和保存运算结果的唯一场所。第60页/共100页3.3堆栈与堆栈操作通常,参加术算逻运算的两个操作数隐含地从堆栈顶部弹出,送到运算器中进行运算,运算的结果再隐含地压入堆栈。这类堆栈操作指令中没有地址部分,故称为零地址指令。20012000abba2002+a+ba+b第61页/共100页第3章3.1 指令格式3.2寻址技术3.3堆栈与堆栈操作3.4指令类型3.5指令系统的发展 第62页/共100页3.4指令类型数据传送类指令数据传送类指令主要用于实现寄存器与寄存器之间,寄存器
28、与主存单元之间以及两个主存单元之间的数据传送。数据传送类指令又可以细分为:1.一般传送指令一般传送指令(MOV)具有数据复制的性质,即数据从源地址传送到目的地址,而源地址中的内容保持不变。传送通常以字节、字、双字或数组为单位,特殊情况下也能按位为单位进行传送。第63页/共100页3.4指令类型(1)主存单元之间的传送MOVmem2,mem1,其含义为(mem1)mem2(2)从主存单元传送到寄存器MOVreg,mem,其含义为(mem)reg在有些计算机中,该指令用助记符LOAD表示,又称为取数指令。第64页/共100页3.4指令类型(3)从寄存器传送到主存单元MOVmem,reg,其含义为(
29、reg)mem在有些计算机里,该指令用助记符STORE表示,又称为存数指令。(4)寄存器之间的传送MOVreg2,reg1,其含义为(reg1)reg2第65页/共100页3.4指令类型 2.堆栈操作指令堆栈指令是一种特殊的数据传送指令,分为进栈(PUSH)和出栈(POP)两种。因为堆栈(指软堆栈)是主存的一个特定区域,所以对堆栈的操作也就是对存储器的操作。3.数据交换指令前述指令的传送都是单方向的,然而,数据传送也可以是双方向的,即将源操作数与目的操作数(一个字节或一个字)相互交换位置。第66页/共100页3.4指令类型 运算类指令1.算术运算指令算术运算指令主要用于进行定点和浮点运算。这类
30、运算包括加、减、乘、除以及加1、减1、比较等,有些机器还有十进制算术运算指令。绝大多数算术运算指令都会影响到状态标志位,通常的标志位有进位、溢出、全零、正负和奇偶等。第67页/共100页3.4指令类型2.逻辑运算指令一般计算机都具有与、或、非、异或等逻辑运算指令。这类指令在没有设置专门的位操作指令的计算机中常用于对数据字(字节)中某些位(一位或多位)进行操作。(1)按位测(位检查)XXXXXXXXX 0 0 0 1 0 0 0 00 0 0 X 0 0 0 0AND AL,10H第68页/共100页3.4指令类型(2)按位清(位清除)XXXXXXXX 1 1 1 1 1 1 0 1XXXXXX
31、 0XX(3)按位置(位设置)XXXXXXXX 0 1 0 0 0 0 0 0X 1XXXXXXXOR AL,40HAND AL,FDH第69页/共100页3.4指令类型(4)按位修改利用“异或”指令可以修改目的操作数的某些位,只要源操作数的相应位为“1”,其余位为“0”,异或之后就达到了修改这些位的目的(因为A 1=A,A 0=A)。XXXXXXXX 0 0 0 0 1 0 0 0XXXXXXXXX第70页/共100页3.4指令类型(5)判符合若两数相符合,其异或之后的结果必定为“0”。(6)清0XORAL,AL第71页/共100页3.4指令类型 3.移位指令分为算术移位、逻辑移位和循环移位
32、3类,它们又可分为左移和右移两种。算术移位的对象是带符号数,算术移位过程中必须保持操作数的符号不变,左移一位,数值 2,右移一位,数值 2。第72页/共100页3.4指令类型 逻辑移位的对象是没有数值含义的二进制代码,因此移位时不必考虑符号问题。循环移位又按进位位是否一起循环分为两类:小循环(不带进位循环ROL)移出的位不仅要进入CF,而且还要填补空出的位。大循环(带进位循环RCL)用原CF的值填补空出的位,移出的位再进入CF。第73页/共100页2012.10假设当前,AL=01010011B,CF=1,则 执行指令 ROL AL,1 后,AL=10100110B,CF=0 执行指令 RCL
33、 AL,1 后,AL=10100111B,CF=0 最后一位的1,是先前CF的13.4指令类型 第74页/共100页3.4指令类型 程序控制类指令程序控制类指令用于控制程序的执行方向,并使程序具有测试、分析与判断的能力。1.转移指令在程序执行过程中,通常采用转移指令来改变程序的执行方向。转移指令又分无条件转移和条件转移两种。无条件转移指令(JMP)不受任何条件的约束,直接把程序转向新的位置执行。第75页/共100页3.4指令类型 条件转移指令必须受到条件的约束,若条件满足时才转向新的位置执行,否则程序仍顺序执行。无论是条件转移还是无条件转移都需要给出转移地址。若采用相对寻址方式,转移地址为当前
34、指令地址(即PC的值)和指令中给出的位移量之和,即:(PC)+位移量PC;若采用绝对寻址方式,转移地址由指令的地址码直接给出,即:APC。第76页/共100页3.4指令类型 转移的条件以某些标志位或这些标志位的逻辑运算作为依据,根据单个标志位的条件转移指令的转移条件是上次运算结果的某些标志,如进位标志、结果为零标志、结果溢出标志等,而用于无符号数和带符号数的条件转移指令的转移条件则是上述标志位逻辑运算的结果。无符号数之间大小比较后的条件转移指令和带符号数之间的大小比较后的条件转移指令有很大不同。带符号数间的次序关系称为大于(G)等于(E)和小于(L);无符号数间的次序关系称为高于(A)等于(E
35、)和低于(B)。第77页/共100页3.4指令类型 2.子程序调用指令子程序是一组可以公用的指令序列,只要知道子程序的入口地址就能调用它。从主程序转向子程序的指令称为子程序调用指令(CALL);而从子程序转向主程序的指令称为返回指令(RET)。主程序CALL A子程序RETA:第78页/共100页3.4指令类型主程序和子程序是相对的概念,调用其它程序的程序是主程序;被其它程序调用的程序是子程序。转子指令安排在主程序中需要调用子程序的地方,转子指令是一地址指令。第79页/共100页3.4指令类型 子程序调用指令和转移指令都可以改变程序的执行顺序,但两者存在着很大的差别:转移指令转移到指令中给出的
36、转移地址处执行指令,不存在返回要求,没有返回地址问题;而子程序调用指令必须以某种方式保存返回地址,以便返回时能找到原来的位置。转移指令用于实现同一程序内的转移;而子程序调用指令转去执行一段子程序,实现的是程序与程序之间的转移。第80页/共100页3.4指令类型子程序嵌套主程序CALL A子程序ARETA:CALL B子程序BRETB:CALL C子程序CRETC:K:K+1:L:L+1:M:M+1:L+1M+1堆栈K+1利用堆栈保存返回地址第81页/共100页3.4指令类型子程序递归主程序CALL A子程序ARETA:CALL AK:K+1:L:L+1:L+1堆栈K+1L+1利用堆栈保存返回地
37、址第82页/共100页3.4指令类型 保存返回地址的方法除去堆栈以外还有:(1)用子程序的第一个字单元存放返回地址。转子指令把返回地址存放在子程序的第一个字单元中,子程序从第二个字单元开始执行。返回时将第一个字单元地址作为间接地址,采用间址方式返回主程序。这种方法可以实现多重转子,但不能实现递归循环,Cyber70采用的就是这种方法。第83页/共100页3.4指令类型 (2)用寄存器存放返回地址。转子指令先把返回地址放到某一个寄存器中,再由子程序将寄存器中的内容转移到另一个安全的地方,比如存储器的某个区域。这是一种较为安全的方法,可以实现子程序的递归循环。IBM370采用这种方法,这种方法相对
38、增加了子程序的复杂程度。第84页/共100页3.4指令类型子程序嵌套主程序CALL A子程序ARET AA:CALL B子程序BRET BB:CALL C子程序CRET CC:K:K+1:L:L+1:M:M+1:L+1M+1K+1(利用子程序的第一个单元保存返回地址)第85页/共100页3.4指令类型子程序递归主程序CALL A子程序AA:CALL AK:K+1:L:L+1:K+1L+1(利用子程序的第一个单元保存返回地址)第86页/共100页3.4指令类型 3.返回指令从子程序转向主程序的指令称为返回指令,其助记符一般为RET,子程序的最后一条指令一定是返回指令。返回地址存放的位置决定了返回
39、指令的格式,如果返回地址保存在堆栈中,则返回指令是零地址指令,如果返回地址保存在某个主存单元中,则返回指令中必须是一地址指令。第87页/共100页3.4指令类型 输入/输出类指令输入/输出(I/O)类指令用来实现主机与外部设备之间的信息交换,包括输入/输出数据、主机向外设发控制命令或外设向主机报告工作状态等。从广义的角度看,I/O指令可以归入数据传送类。各种不同的计算机的I/O指令差别很大,通常有两种方式:独立编址方式统一编址方式第88页/共100页3.4指令类型 1.独立编址的I/O所谓独立编址就是把外设端口和主存单元分别独立编址。指令系统中有专门的IN/OUT指令。以主机为基准,信息由外设
40、传送到主机称为输入,反之称为输出。指令中需要给出外设端口地址。这些端口地址与主存地址无关,是另一个独立的地址空间。第89页/共100页3.4指令类型外设寄存器主存0000H00HFFFFHFFH访存指令输入/输出指令MEMRMEMWIORIOW第90页/共100页3.4指令类型2.统一编址的I/O所谓统一编址就是把外设寄存器和主存单元统一编址。指令系统中没有专门的I/O指令,就用一般的数据传送类指令来实现I/O操作。外设寄存器主存0000HFFFFHEFFFH4KBMOV R0,(50H)MOV R0,(F000H)数据传送指令输入指令第91页/共100页第3章3.1 指令格式3.2寻址技术3
41、.3堆栈与堆栈操作3.4指令类型3.5指令系统的发展 第92页/共100页3.5指令系统的发展架构的扩展指令集MMX指令集SSE指令集SSE3指令集3DNow指令集SSE2指令集SSSE3指令集SSE4指令集SSE5指令集AVX指令集FMA指令集第93页/共100页3.5指令系统的发展从复杂指令系统到精简指令系统指令系统中指令丰富、功能强。这些计算机被称为复杂指令系统计算机,简称CISC。大量测试表明,最常使用的是一些比较简单的指令,这类指令仅占指令总数的20,但在各种程序中出现的频度却占80,其余大多数指令是功能复杂的指令,这类指令占指令总数的80,但其使用频度很低,仅占20。因此,人们把这
42、种情况称为“20-80律”。第94页/共100页3.5指令系统的发展80%不常用指令复杂指令系统20%常用指令精简指令系统第95页/共100页3.5指令系统的发展 从“20-80律”出发,人们开始了对指令系统合理性的研究,提出了精简指令系统的想法,出现了精简指令系统计算机,简称RISC。第96页/共100页3.5指令系统的发展 和EPICVLIW是英文“Very LongInstructionWord”的缩写,中文含义是“超长指令字”,即一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度。在这种指令系统中,编译器把许多简单、独立的指令组合到一条指令字中。当这些指令字从主存中取出放到
43、处理器中时,它们被容易地分解成几条简单的指令,这些简单的指令被分派到一些独立的执行单元去执行。第97页/共100页3.5指令系统的发展 超长指令字(VLIW)是指令级并行,超线程(HT)是线程级并行,而多内核则是芯片级并行。这三种方式都是提高并行计算性能的有效途径。第98页/共100页3.5指令系统的发展 EPIC是英文“ExplicitParallelInstructionCode”的缩写,中文含义是“显式并行指令代码”。EPIC是从VLIW中衍生出来的,通过将多条指令放入一个指令字,有效的提高了CPU各个计算功能部件的利用效率,提高了程序的性能。EPIC模式专为高效地并行处理而设计,能够同时处理多个指令或程序。第99页/共100页2012.10北京理工大学计算机学院感谢您的观看!第100页/共100页