资源描述:
《MIPS系统指令系统超详细.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章指令系统3.1概述3.2计算机硬件的操作3.3计算机硬件的操作数3.4指令的计算机内部表示3.5决策指令3.6计算机硬件对过程的支持3.7计算机对字符的处理(略去)3.8MIPS的其他寻址方式3.1概述要给计算机硬件直接下命令,就必须使用机器的语言。机器语言中的“单词”称为指令,其“词汇表”称为指令集。本章将介绍现实中计算机所使用的指令集系统。通过学习机器指令,你会了解到计算机中的一个重要概念:存储程序(stored-rogram)着重介绍的是MIPS指令集,涉及到MIPS指令的操作数、指令格式及指令类别一、指令系统的发展1、CISC---复杂指令系统计算机ComplexIn
2、structionSetComputer,20世纪60年代后期,随着IC、LSI、VLSI的出现和发展,计算机硬件成本不断下降,人们热衷于在指令系统真增加更多的指令和复杂的指令,来提高操作系统的效率,促使指令系统越来越复杂,这一时期的计算机称为CISC。2、RISC---精简指令系统计算机ReducedInstructionSetComputer,1975年IBM公司开始研究指令系统的合理性问题,IBM的JohnCocke提出精简指令的想法,本书作者DavidA.Patterson创造了RISC一词,并定义了其含义,后来JohnL.Hennessy带领他在斯坦福的研究小组研制成功M
3、IPS机,精简指令系统计算机从此诞生并发展起来。二、RISC的特点1、优先选取一些使用频率最高的简单指令,以及一些很有用但不复杂的指令,避免复杂指令。2、指令长度固定,指令格式种类少,寻址方式种类少,指令各字段的划分比较一致,各字段功能较规整。3、只有存数、取数指令访问存储器,其余指令的操作都在寄存器之间进行。4、CPU中通用寄存器数量较多。三、MIPS简介1、处理器的缩写①MillionInstructionPerSecond,泛指每秒能执行百万条指令的处理器②MicroprocessorwithoutInterlockingPipelineStage,一种无内锁的流水线微处理器
4、2、MIPS公司3.2计算机硬件的操作指令一、指令的基本格式指令格式,是指令用二进制代码表示的结构形式,通常有操作码字段和地址码字段组成。操作码表示指令的操作特性和功能,而地址码通常指定参与操作的操作数的地址,故指令基本格式如下:OPA1、操作码操作码字段的位数取决于指令系统的规模,例如,只有8条指令的指令系统,OP字段有3位就够了,如果系统包含32条指令,则OP字段需要5位操作码。一般来说一个包含n位的操作码能够表示2n条指令。2、地址码根据一条指令中有几个操作数地址,可将该指令称为几地址指令,一般有三地址指令、二地址指令、一地址指令和零地址指令格式:OPOPAOPA1A2OPA
5、AA123三、MIPS算术运算指令1、加法指令addrd,rs,rt#注释①每条指令只执行一个操作,并且有且只有三个变量②书写时,每一行只有一条指令,注释放在行尾,由#号引出③该指令执行rd=rs+rt的操作例如:adda,b,c#b+c的和存放在a中其中add称操作符,表示加运算;紧跟add的a是目的操作数,即为结果,其余b、c表示源操作数。每条指令中由“#”号领头的部分是注释。例如:计算a=b+c+d+e;adda,b,c#b+c的和存放在a中adda,a,d#b+c+d的和已存放在a中adda,a,e#b+c+d+e的和已存放在a中2、减法指令subrd,rs,rt#注释例
6、3.1把两个C语言赋值语句编译成MIPS汇编指令下面这段C语言代码包含5个变量a,b,c,d,e:a=b+c;d=a–e;【解答】adda,b,c#a=b+csubd,a,e#d=a–e例3.2把一个复杂的C语言赋值语句编译成MIPS汇编指令f=(g+h)–(i+j);【解答】addt0,g,h#临时变量t0=g+h的和addt1,i,j#临时变量t1=i+j的和最后做减法,把差放在f中:subf,t0,t1#f=t0-t1的值完成一个类似于加法的操作需要3个操作数:2个数参与运算,1个数存放结果。每条指令刚好包含3个操作数,不多也不少,这是遵循简化硬件的原则,因为操作数的个数不定
7、的硬件实现比个数固定的硬件实现复杂得多。这就是硬件设计要考虑的第一条原则:设计原则1:简单性来自规则性。(Simplicityfavorsregularity.)3.3计算机硬件的操作数计算机硬件的操作数放在什么地方?cpu的寄存器(register)中---寄存器操作数寄存器是建造计算机的基石,因为它们是硬件设计中用到的基本单元,对于程序员也是可见的,但其数量有限。存储器中---存储器操作数复杂数据结构,如数组、结构体等包含大量数据元素,不可能映射到数量有限的寄