版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、201220121华东师范大学计算机科学技术系2 2 计算机指令计算机指令201220122华东师范大学计算机科学技术系2 计算机指令2.1 2.1 概述概述2.2 2.2 计算机硬件的操作计算机硬件的操作2.3 2.3 计算机中指令的表示计算机中指令的表示2.4 2.4 计算机硬件的过程支持计算机硬件的过程支持2.5 2.5 人机交互人机交互2.6 2.6 指令和数据的寻址方式指令和数据的寻址方式2.7 2.7 汇编实例汇编实例2.8 2.8 实例:实例:IA-32IA-32指令指令201220123华东师范大学计算机科学技术系2 指令系统2.1 2.1 概述概述201220124华东师范大
2、学计算机科学技术系2.1 2.1 概述概述一、指令系统一、指令系统 指令指令是指计算机执行某种操作的命令是指计算机执行某种操作的命令从计算机组成的层次结构来说,计算机的从计算机组成的层次结构来说,计算机的指令有:指令有:微指令微指令:微程序级的命令,它属于硬件:微程序级的命令,它属于硬件机器指令机器指令:简称指令,每条指令可完成一:简称指令,每条指令可完成一 种独立的操作种独立的操作宏指令宏指令:由若干条机器指令组成的软件指:由若干条机器指令组成的软件指 令,它属于软件令,它属于软件201220125华东师范大学计算机科学技术系一、指令系统一、指令系统 指令系统:指令系统: 一台计算机中所有机
3、器指令的集合一台计算机中所有机器指令的集合是表征一台计算机性能的重要因素是表征一台计算机性能的重要因素 指令系统是软件、硬件的主要交界面,指令指令系统是软件、硬件的主要交界面,指令 的格式与功能不仅直接影响到机器的硬件结的格式与功能不仅直接影响到机器的硬件结 构,也直接影响到系统软件,影响到机器的构,也直接影响到系统软件,影响到机器的 适用范围适用范围 设计目标:使硬件设计及编译器构造简单设计目标:使硬件设计及编译器构造简单 以最低的成本获得最好的性能以最低的成本获得最好的性能201220126华东师范大学计算机科学技术系一、指令系统一、指令系统计算机指令系统的发展计算机指令系统的发展 形成系
4、列计算机形成系列计算机 指基本指令系统相同、基本体系结构相指基本指令系统相同、基本体系结构相 同的一系列计算机同的一系列计算机 解决了软件兼容问题,大大减少了软件解决了软件兼容问题,大大减少了软件 开发费用开发费用 CISCCISC与与RISCRISC 复杂指令集与精简指令集复杂指令集与精简指令集 201220127华东师范大学计算机科学技术系2.1 概述概述二、对指令系统性能的要求二、对指令系统性能的要求 完备性:要求指令系统丰富、功能齐全、完备性:要求指令系统丰富、功能齐全、 使用方便使用方便 有效性:利用该指令系统所编写的程序有效性:利用该指令系统所编写的程序 能够高效率的运行能够高效率
5、的运行 高效率主要表现在程序占据存储空间小、高效率主要表现在程序占据存储空间小、 执行速度快执行速度快一般来说,一个功能更强、更完善的指令一般来说,一个功能更强、更完善的指令系统,必定有更好的有效性系统,必定有更好的有效性201220128华东师范大学计算机科学技术系二、对指令系统性能的要求二、对指令系统性能的要求 规整性:规整性: 对称性:在指令系统中所有的寄存器和存对称性:在指令系统中所有的寄存器和存 储器单元都可同等对待,所有的储器单元都可同等对待,所有的 指令都可使用各种寻址方式指令都可使用各种寻址方式匀齐性:指一种操作性质的指令可以支持匀齐性:指一种操作性质的指令可以支持 各种数据类
6、型各种数据类型格式一致性:指令长度和数据长度有一定格式一致性:指令长度和数据长度有一定 的关系,以方便处理和存取,的关系,以方便处理和存取, 通常为字节长度的整数倍通常为字节长度的整数倍201220129华东师范大学计算机科学技术系二、对指令系统性能的要求二、对指令系统性能的要求 兼容性:兼容性: 系列机各机种之间具有相同的基本结构和系列机各机种之间具有相同的基本结构和 共同的基本指令集,因而指令系统是兼容共同的基本指令集,因而指令系统是兼容 的,即在各类机种上基本软件都可以通用的,即在各类机种上基本软件都可以通用 但由于不同机种推出的时间不同,在结构但由于不同机种推出的时间不同,在结构 和性
7、能上有差异,做到所有软件都完全兼和性能上有差异,做到所有软件都完全兼 容是不可能的,只能做到容是不可能的,只能做到“向上兼容向上兼容”,即即 低档机上运行的软件可以在高档机上运行低档机上运行的软件可以在高档机上运行2012201210华东师范大学计算机科学技术系2.1 概述概述三、低级语言与硬件结构的关系三、低级语言与硬件结构的关系计算机语言计算机语言 高级语言:如高级语言:如C C,JavaJava等,其语句和用法等,其语句和用法 与具体机器的指令系统无关与具体机器的指令系统无关 低级语言:是面向机器的语言,和具体机低级语言:是面向机器的语言,和具体机 器的指令系统密切相关器的指令系统密切相
8、关 机器语言(二进制语言),用指令代机器语言(二进制语言),用指令代 码编写程序码编写程序 汇编语言(符号语言),用指令助记汇编语言(符号语言),用指令助记 符来编写程序符来编写程序2012201211华东师范大学计算机科学技术系三、低级语言与硬件结构的关系三、低级语言与硬件结构的关系高级语言与低级语言的性能比较高级语言与低级语言的性能比较比较内容比较内容高级语言高级语言低级语言低级语言对程序员的训练要求对程序员的训练要求(1)通用算法通用算法(2)语言规则语言规则(3)硬件知识硬件知识有有较少较少不要不要有有较多较多要要对机器独立的程度对机器独立的程度独立独立不独立不独立编制程序的难易程度编
9、制程序的难易程度易易难难编制程序所需时间编制程序所需时间短短较长较长程序执行时间程序执行时间较长较长短短编译过程中对计算机资源的要求编译过程中对计算机资源的要求多多少少2012201212华东师范大学计算机科学技术系2 计算机指令2.1 2.1 概述概述2.2 2.2 计算机硬件的操作计算机硬件的操作2012201213华东师范大学计算机科学技术系2.2 2.2 计算机硬件的操作计算机硬件的操作通过指令要求计算机硬件完成算术运算操作:通过指令要求计算机硬件完成算术运算操作:使用汇编语言的助记符使用汇编语言的助记符: add add a,b,ca,b,c ;( ;(b)+(c)b)+(c)aa
10、特点:只执行一种操作特点:只执行一种操作 有且只有三个操作数有且只有三个操作数( (最多最多) ) 操作数取自寄存器操作数取自寄存器计算四个变量计算四个变量的累加和的累加和需要三条指令:需要三条指令: add add a,b,ca,b,c ;( ;(b)+(c)b)+(c)aa add add a,a,da,a,d ;( ;(a)+(d)a)+(d)aa add add a,a,ea,a,e ;( ;(a)+(e)a)+(e)aa 硬件设计原则硬件设计原则1:操作数格式规整,操作数格式规整,设计简单设计简单算术运算指令算术运算指令2012201214华东师范大学计算机科学技术系2.2 2.2
11、计算机硬件的操作计算机硬件的操作一、高级语言程序与汇编语言程序的关系一、高级语言程序与汇编语言程序的关系 把把C C语言编译成汇编语言(语言编译成汇编语言(MIPSMIPS)例例1 1) a=a=b+cb+c d=a-e d=a-e C C编译器生成的汇编指令:编译器生成的汇编指令: add add a,b,ca,b,c sub sub d,a,ed,a,e例例2 2) f=(f=(g+h)-(i+jg+h)-(i+j) ) C C编译器生成的汇编指令:编译器生成的汇编指令: add t0,g,hadd t0,g,h add t1,i,j add t1,i,j Sub f,t0,t1 Sub
12、f,t0,t1不同系列的计算机,采用的指令助记符不一样不同系列的计算机,采用的指令助记符不一样 MIPS MIPS是世界上十分流行的一款是世界上十分流行的一款RISCRISC处理器处理器 (Microprocessor(Microprocessor withoutwithout interlockedinterlocked pipedpiped stagesstages) 无内部互锁流水级的微处理器无内部互锁流水级的微处理器8080年代初期由斯坦福年代初期由斯坦福(Stanford)(Stanford)大学大学HennessyHennessy教授领导的教授领导的研究小组研制出来的。研究小组研制
13、出来的。MIPSMIPS公司在此基础上开发了公司在此基础上开发了R系列系列的的RISCRISC工业产品的微处理器。这些系列产品为很多计算机工业产品的微处理器。这些系列产品为很多计算机公司采用,构成各种工作站和计算机系统。如公司采用,构成各种工作站和计算机系统。如R3000R3000、R4000R4000、R10000R10000等等 2012201215华东师范大学计算机科学技术系2.2 2.2 计算机硬件的操作计算机硬件的操作二、计算机硬件的操作数二、计算机硬件的操作数1. 1. 寄存器操作数寄存器操作数 以以MIPSMIPS为例讨论为例讨论操作数来自寄存器,操作数来自寄存器,MIPSMIP
14、S寄存器有寄存器有3232个,每个寄存个,每个寄存器为器为3232位,对字进行访问。位,对字进行访问。有效利用寄存器是提高程序性能的关键MIPSMIPS指令中寄存器的表示:指令中寄存器的表示: $ $sisi $ $titi例例3 3)C C语句:语句: f=(f=(g+h)-(i+jg+h)-(i+j) ) C C编译器生成的编译器生成的MIPSMIPS汇编指令:汇编指令: add $t0,$s1,$s2add $t0,$s1,$s2 ;g,hg,h分配给分配给$s1,$s2$s1,$s2 add $t1,$s3,$s4add $t1,$s3,$s4 ;i,ji,j分配给分配给$s3,$s4
15、$s3,$s4 Sub $s0,$t0,$t1Sub $s0,$t0,$t1 ;f f分配给分配给$s0$s0硬件设计原则硬件设计原则2:越少越快越少越快同时考虑指令字长同时考虑指令字长 P455 P455图图A-6-1A-6-1: $S0 $S0$s7$s7:保存临时变量(过程调用时保留);:保存临时变量(过程调用时保留); $t0$t0$t7$t7:临时变量(过程调用时不保留)。:临时变量(过程调用时不保留)。2012201216华东师范大学计算机科学技术系二、计算机硬件的操作数二、计算机硬件的操作数2. 2. 存储器操作数存储器操作数通过通过数据传送指令数据传送指令将存储器中的数据送往寄
16、存器将存储器中的数据送往寄存器取数指令:取数指令:lwlw (LDA (LDA等)等)例例4 4)C C语句:语句: g=h+A8 g=h+A8 一个操作数来自存储器,运算前先将一个操作数来自存储器,运算前先将A8A8送寄存器,送寄存器,A8A8存储单元地址由存储单元地址由$S3$S3中的基址加中的基址加8 8得到得到C C编译器生成的汇编指令(存储器以字编址):编译器生成的汇编指令(存储器以字编址): lwlw $t0,8($s3) $t0,8($s3) ;存储器;存储器A8 $t0A8 $t0 add $s1,$s2,$t0 add $s1,$s2,$t0 ;g,hg,h分配给分配给$s1
17、,$s2 $s1,$s2 $S3$S3为基址寄存器,为基址寄存器,8 8位偏移位偏移量量A A是含有是含有100100个字个字的数组的数组2012201217华东师范大学计算机科学技术系2. 存储器操作数存储器操作数 存储器编址方法存储器编址方法大多数存储器按字节编址大多数存储器按字节编址 连续字的地址相差连续字的地址相差4 4对齐限制:对齐限制:MIPSMIPS中的字的起始地址必须是中的字的起始地址必须是4 4 的倍数的倍数例例4 4)C C语句:语句: g=h+A8 g=h+A8 C C编译器生成的编译器生成的MIPSMIPS汇编指令:汇编指令: lwlw $t0, $t0,3232($s
18、3) ($s3) ;存储器;存储器A8 $t0A8 $t0 add $s1,$s2,$t0 add $s1,$s2,$t0 ;g,hg,h分配给分配给$s1,$s2$s1,$s22012201218华东师范大学计算机科学技术系2. 存储器操作数存储器操作数 两种字节寻址方式两种字节寻址方式(0 xABCD)(0 xABCD): 使用最左边或使用最左边或“大端大端”字节的地址作为字字节的地址作为字地址地址 使用最右边或使用最右边或“小端小端”字节的地址作为字字节的地址作为字地址地址MIPSMIPS采用大端编址采用大端编址 字节0 1 2 3ABCD字节0 1 2 3DCBA2012201219华
19、东师范大学计算机科学技术系2.2.存储器操作数存储器操作数存数指令:存数指令:swsw (STRSTR等)等)例例5 5)C C语句:语句: A12=h+A8 A12=h+A8 两个操作数来自存储器,一个为源操作数,一个两个操作数来自存储器,一个为源操作数,一个为目的操作数为目的操作数 C C编译器生成的编译器生成的MIPSMIPS汇编指令:汇编指令: lwlw $t0,32($s3) $t0,32($s3) ;存储器;存储器A8 $t0A8 $t0 add $t0,$s2,$t0 add $t0,$s2,$t0 ;h+A8 $t0h+A8 $t0 swsw $t0,48($s3) $t0,4
20、8($s3) ;(;($t0) A12$t0) A122012201220华东师范大学计算机科学技术系二、计算机硬件的操作数二、计算机硬件的操作数3. 3. 常数或立即数常数或立即数 指令直接给出操作数,可加快运算速度指令直接给出操作数,可加快运算速度 硬件设计原则硬件设计原则3:加速执行常用操作加速执行常用操作立即数加指令立即数加指令例例6)addiaddi $s3,$s3,4 $s3,$s3,4 ;$s3=$s3+4 ;$s3=$s3+4P33P33图图2-4 2-4 上述上述MIPSMIPS指令和操作数总结指令和操作数总结2012201221华东师范大学计算机科学技术系2 计算机指令2.
21、1 2.1 概述概述2.2 2.2 计算机硬件的操作计算机硬件的操作2.3 2.3 计算机中指令的表示计算机中指令的表示2012201222华东师范大学计算机科学技术系2.3 计算机中指令的表示计算机中指令的表示指令字指令字( (简称指令简称指令) )即表示一条指令的机器字即表示一条指令的机器字指令格式指令格式则是指令字用二进制代码表示的结则是指令字用二进制代码表示的结 构形式构形式 操作码字段操作码字段 地址码字段地址码字段表征指令的操表征指令的操作特性与功能作特性与功能指定参与操作的操指定参与操作的操作数的地址作数的地址以助记符编写的指令送入计算机需转换成相应的二进制码,以助记符编写的指令
22、送入计算机需转换成相应的二进制码,这种转换借助汇编程序可以自动完成,汇编程序就相当于这种转换借助汇编程序可以自动完成,汇编程序就相当于一个一个“翻译翻译”。2012201223华东师范大学计算机科学技术系2.3 2.3 计算机中指令的表示计算机中指令的表示一、操作码一、操作码对每条指令规定一个操作码,表示该指令应对每条指令规定一个操作码,表示该指令应进行什么性质的操作。进行什么性质的操作。操作码字段的位数一般取决于计算机指令系操作码字段的位数一般取决于计算机指令系统的规模,统的规模,n n位操作码可表示位操作码可表示2 2n n条指令功能。条指令功能。一个指令系统中操作码的位数往往是不定长一个
23、指令系统中操作码的位数往往是不定长的,即不同类型的指令有不同的划分,以便的,即不同类型的指令有不同的划分,以便尽可能用较短的指令字长来表示更多的操作尽可能用较短的指令字长来表示更多的操作种类。种类。2012201224华东师范大学计算机科学技术系2.3 2.3 计算机中指令的表示计算机中指令的表示二、地址码二、地址码 CPUCPU用来取得所需操作数的地址用来取得所需操作数的地址各种不同操作数的指令格式各种不同操作数的指令格式$s3$s3$s2$s2$s1$s1操作码操作码三地址指令三地址指令$s2$s2$s1$s1操作码操作码二地址指令二地址指令AddressAddress操作码操作码一地址指
24、令一地址指令操作码操作码零地址指令零地址指令2012201225华东师范大学计算机科学技术系二、地址码二、地址码1.1.零地址指令零地址指令 特点:指令字中只有操作码,而无地址码特点:指令字中只有操作码,而无地址码 无需操作数无需操作数 操作数隐含操作数隐含2.2.一地址指令一地址指令单操作数指令单操作数指令 特点:另一操作数地址或目的地址隐含,特点:另一操作数地址或目的地址隐含,($s0)($s0)OPOP(Address)(Address)-$s0$s0表示某一隐表示某一隐含的寄存器含的寄存器中的内容中的内容表示操作性质表示操作性质表示某一存储单元表示某一存储单元的内容的内容2012201
25、226华东师范大学计算机科学技术系二、地址码二、地址码3.3.二地址指令二地址指令双操作数指令双操作数指令 特点:特点:$s0$s0、$s1$s1为两操作数地址,为两操作数地址,$s1$s1兼目的兼目的 地址地址($s0)($s0)OPOP($s1)($s1)-$s0$s04.4.三地址指令三地址指令 特点:指令直接给出了二操作数地址及目特点:指令直接给出了二操作数地址及目 的地址的地址 ($s0)($s0)OPOP($s1)($s1)-$s2$s2 优点:优点:$s0$s0、$s1$s1中内容不被破坏中内容不被破坏 缺点:指令码加长,增加了存储空间缺点:指令码加长,增加了存储空间201220
26、1227华东师范大学计算机科学技术系二、地址码二、地址码按操作数物理地址分类按操作数物理地址分类 存储器存储器- -存储器(存储器(SSSS)型指令)型指令 参与操作的数都放在内存里,执行此类参与操作的数都放在内存里,执行此类 指令需多次访问内存,速度慢指令需多次访问内存,速度慢 寄存器寄存器- -寄存器(寄存器(RRRR)型指令)型指令 CPUCPU内部操作,速度快内部操作,速度快 寄存器寄存器- -存储器(存储器(RSRS)型指令)型指令 执行此类指令时,既要访问内存单元,执行此类指令时,既要访问内存单元, 又要访问寄存器又要访问寄存器通常指令字的长度和地址结构不是单一的,通常指令字的长度
27、和地址结构不是单一的,往往混合使用,增强功能往往混合使用,增强功能 MIPS MIPS使用三地址格式使用三地址格式 运算类指令只能为运算类指令只能为RRRR型指令;传送类指令为型指令;传送类指令为RSRS型指令型指令2012201228华东师范大学计算机科学技术系2.3 2.3 计算机中指令的表示计算机中指令的表示三、指令字长度三、指令字长度指令字长度一个指令字中包含二进制代码的位数一个指令字中包含二进制代码的位数机器字长机器字长计算机能并行处理的二进制数据的位数计算机能并行处理的二进制数据的位数机器字长通常与寄存器的位数一致机器字长通常与寄存器的位数一致2012201229华东师范大学计算机
28、科学技术系三、指令字长度三、指令字长度指令分类指令分类单字长指令单字长指令:指令字长度等于机器字长度:指令字长度等于机器字长度半字长指令半字长指令:指令字长度等于半个机器字:指令字长度等于半个机器字 长度长度双字长指令双字长指令:指令字长度等于两个机器字:指令字长度等于两个机器字 长度长度多字长优点:能提供足够的地址位寻址主存多字长优点:能提供足够的地址位寻址主存 缺点:占用存储空间,多次访问,速缺点:占用存储空间,多次访问,速 度慢度慢 MIPS MIPS指令使用指令使用3232位字长,同机器字长位字长,同机器字长规整性规整性2012201230华东师范大学计算机科学技术系2.3 2.3 计
29、算机中指令的表示计算机中指令的表示四、四、MIPSMIPS指令格式指令格式 op op: 操作码操作码 rsrs: : 第一源操作数寄存器第一源操作数寄存器 rtrt: : 第二源操作数寄存器第二源操作数寄存器 rd: rd: 目的操作数寄存器目的操作数寄存器 shamtshamt: : 位移量位移量 functfunct: : 函数码,选择函数码,选择opop的特定变体的特定变体opoprsrsrtrtrdrdshamtshamt functfunct 6位位 5位位 5位位 5位位 5位位 6位位2012201231华东师范大学计算机科学技术系四、四、MIPSMIPS指令格式指令格式如指令
30、采用统一格式又要保持如指令采用统一格式又要保持3232位指令字长,位指令字长,则最大常数只能为则最大常数只能为2 25 5MIPSMIPS设计者采用一种折中方案:设计者采用一种折中方案:所有指令长度一致,但采用不同的指令格式所有指令长度一致,但采用不同的指令格式 R R型(寄存器):型(寄存器):I I型型(立即数)立即数)opoprsrsrtrtrdrdshamtshamt functfunct硬件设计原则硬件设计原则4:优秀的设计需要适当的折中优秀的设计需要适当的折中 6位位 5位位 5位位 5位位 5位位 6位位opoprsrsrtrtconstant or addressconstan
31、t or address 6位位 5位位 5位位 16位位1616位字段位字段constant or addressconstant or address可表示:可表示:2 21515个地址或立即数个地址或立即数2012201232华东师范大学计算机科学技术系四、四、MIPSMIPS指令格式指令格式P46P46图图2-132-13给出了前述指令的格式给出了前述指令的格式例例7 7)将指令)将指令add $tO,$s1,$s2add $tO,$s1,$s2翻译为机器码:翻译为机器码: op op: 000000 000000 加加/ /减减 functfunct:100000 100000 选择
32、加操作选择加操作 寄存器寄存器$t0-$t7$t0-$t7分别对应寄存器分别对应寄存器8-158-15 寄存器寄存器$S0-$S7$S0-$S7分别对应寄存器分别对应寄存器16-2316-23 寄存器寄存器$zer0$zer0对应寄存器对应寄存器0 0 $s1: 17=10001B $s2: 18=10010B $s1: 17=10001B $s2: 18=10010B $t0: 8=01000B $zer0 $t0: 8=01000B $zer0:0=00000B0=00000B000000000000 1000110001 100101001001000010000000000000100
33、000100000 op op rsrs rtrt rd rd shamtshamt functfunct2012201233华东师范大学计算机科学技术系四、四、MIPSMIPS指令格式指令格式例例8 8)将指令)将指令lwlw $t0,32($s3) $t0,32($s3)翻译为机器码:翻译为机器码: 这里这里rtrt字段为目的寄存器地址字段为目的寄存器地址多种指令格式使硬件变得复杂,力求指令格多种指令格式使硬件变得复杂,力求指令格式基本一致,可降低复杂度式基本一致,可降低复杂度例例R R型和型和I I型指令格式,前三段各段长度相等,型指令格式,前三段各段长度相等,R R型后三段长度等于型后
34、三段长度等于I I型第四段型第四段100011100011 1001110011 0100001000 0000 0000 0010 0000 0000 0000 0010 0000 op op rsrs rtrt address address2012201234华东师范大学计算机科学技术系四、四、MIPSMIPS指令格式指令格式例例9 9)C C语句:语句:A300=h+A300A300=h+A300 设数组设数组A A的基址放在的基址放在$t1$t1中,翻译成机器码。中,翻译成机器码。 编译成编译成MIPSMIPS指令:指令: lwlw $t0,1200($t1) ;A300$t0 $t
35、0,1200($t1) ;A300$t0 add $t0,$s2,$t0 ;h+A300$t0 add $t0,$s2,$t0 ;h+A300$t0 swsw $t0,1200($t1) $t0,1200($t1) ;h+A300A300;h+A300A300 翻译成机器码翻译成机器码10 0011 10 0011 lwlw0 10010 1001t1 t1 0 1000 0 1000 t0t00000 0100 1011 00000000 0100 1011 00001200120000 000000 0000addadd1 00101 0010s2s20 10000 1000t0t00 1
36、0000 1000t0t00 00000 000010 000010 000010 101110 1011swsw0 10010 1001t1t10 10000 1000t0t00000 0100 1011 00000000 0100 1011 000012001200 小结见小结见P38P38图图2-72-72012201235华东师范大学计算机科学技术系四、四、MIPSMIPS指令格式指令格式 当前计算机构造基于两个关键性的原则:当前计算机构造基于两个关键性的原则:1.1.指令以数据形式表示指令以数据形式表示2.2.和数据一样,程序存储在存储器中,并且和数据一样,程序存储在存储器中,并且可
37、以读写可以读写 存储程序存储程序 P39P39图图2-82-8显示了存储程序的概念显示了存储程序的概念2012201236华东师范大学计算机科学技术系2.3 2.3 计算机中指令的表示计算机中指令的表示五、逻辑运算指令五、逻辑运算指令逻辑运算:逻辑运算: MIPS MIPS使用使用nornor指令(其中一个操作数为指令(其中一个操作数为0 0)来实现)来实现 NOTNOT操作操作 逻辑乘、逻辑加支持立即数操作逻辑乘、逻辑加支持立即数操作逻辑操作C操作符Java操作符MIPS指令助记符逻辑左移srl逻辑乘&and,andi逻辑加IIor,ori逻辑非nor2012201237华东师范大学
38、计算机科学技术系五、逻辑运算指令五、逻辑运算指令例例1010)将指令)将指令sllsll $t2,$s0,4 $t2,$s0,4翻译为机器码翻译为机器码指令功能:将指令功能:将$s0$s0内容逻辑左移内容逻辑左移4 4位后送位后送$t2$t2机器码为:机器码为: ShamtShamt: :位移量,这里即指左移位移量,这里即指左移4 4位位原原($s0)= 0000 ($s0)= 0000 00000000 00000000 00000000 00000000 0001 0000 1001 0001 0000 1001执行执行sllsll指令后:指令后: ($t2)= 0000 ($t2)= 0
39、000 00000000 00000000 00000000 0001 0000 1001 0000 0001 0000 1001 0000000000000000 0000000000 100001000001010010100010000100000000000000 op op rsrs rtrt rd rd shamtshamt functfunct2012201238华东师范大学计算机科学技术系五、逻辑运算指令五、逻辑运算指令例例1111)设:)设: ($t1)= 0000 0011 0000 ($t1)= 0000 0011 0000 00000000 00000000 0001
40、0000 1001 0001 0000 1001($t2)= 0000 ($t2)= 0000 00000000 00000000 00000000 1111 1111 11111111 11111111 11111111执行指令执行指令 and $t0,$t1,$t2and $t0,$t1,$t2后,后,$t0$t0的内容?的内容?指令功能:将指令功能:将$t1$t1内容与上内容与上$t2$t2内容后送内容后送$t0$t0执行指令后:执行指令后:($t0)= 0000 ($t0)= 0000 00000000 00000000 00000000 00000000 0001 0000 1001
41、 0001 0000 1001这种位模式习惯上称为掩码(这种位模式习惯上称为掩码(mask)mask),可隐藏某些位,可隐藏某些位2012201239华东师范大学计算机科学技术系五、逻辑运算指令五、逻辑运算指令例例1111)设:)设: ($t1)= 0000 0011 0000 ($t1)= 0000 0011 0000 00000000 00000000 0001 0000 1001 0001 0000 1001($t2)= 0000 ($t2)= 0000 00000000 00000000 00000000 1111 1111 11111111 11111111 11111111执行指令
42、执行指令 or $t0,$t1,$t2or $t0,$t1,$t2后,后,$t0$t0的内容?的内容?指令功能:将指令功能:将$t1$t1内容或上内容或上$t2$t2内容后送内容后送$t0$t0执行指令后:执行指令后:($t0)= 0000 0011 0000 ($t0)= 0000 0011 0000 00000000 1111 1111 11111111 11111111 11111111执行指令执行指令 nor $t0,$t1,$t3nor $t0,$t1,$t3后,后,$t0$t0的内容?的内容?指令功能:将指令功能:将$t1$t1内容与内容与$t3$t3内容或非后送内容或非后送$t0
43、$t0($t3$t3 内容为内容为0 0)执行指令后:执行指令后:($t0)= 1111 1100 1111 ($t0)= 1111 1100 1111 11111111 11111111 1110 1111 0110 1110 1111 0110 逻辑乘和逻辑加还支持立即数操作逻辑乘和逻辑加还支持立即数操作 小结见小结见P42P42图图2-102-102012201240华东师范大学计算机科学技术系2.3 2.3 计算机中指令的表示计算机中指令的表示六、分支指令六、分支指令1. 1. 条件分支指令条件分支指令: : beqbeq register1,register2,L1 register
44、1,register2,L1指令功能:若(指令功能:若(register1register1)= =(register2register2) 时,跳转至时,跳转至L1L1地址地址 bnebne register1,register2,L1 register1,register2,L1指令功能:若(指令功能:若(register1register1)(register2register2) 时,跳转至时,跳转至L1L1地址地址2012201241华东师范大学计算机科学技术系六、分支指令六、分支指令例例1212)将)将if-then-elseif-then-else语句编译成条件分支语句编译成条件
45、分支 指令指令 If(iIf(i=j) f=j) f=g+hg+h; else f=; else f=g-hg-h; ;编译成编译成MIPSMIPS指令:指令: bnebne $s3,$s4,else ; $s3,$s4,else ;当当i ij j转转elseelse add $s0,$s1,$s2 ;f= add $s0,$s1,$s2 ;f=g+hg+h else:else: sub $s0,$s1,$s2 ;f= sub $s0,$s1,$s2 ;f=g-hg-h f,g,h,i,jf,g,h,i,j对应对应$s0,$s1,$s2,$s3,$s4$s0,$s1,$s2,$s3,$s4
46、判断相反条件代码效率较高判断相反条件代码效率较高2012201242华东师范大学计算机科学技术系六、分支指令六、分支指令2. MIPS2. MIPS指令系统将无条件分支指令命名为指令系统将无条件分支指令命名为跳跳 转指令(转指令(jumpjump),简写为),简写为j j 将例将例1212)编译完整:)编译完整: bnebne $s3,$s4,else ; $s3,$s4,else ;当当i ij j转转elseelse add $s0,$s1,$s2 ;f= add $s0,$s1,$s2 ;f=g+hg+h j exitj exit ;go to exit ;go to exitelse:
47、 sub $s0,$s1,$s2 ;f=else: sub $s0,$s1,$s2 ;f=g-hg-hexit: exit: 。 。 。 编译器经常产生分支指令和标号,而在程序设计语言中并编译器经常产生分支指令和标号,而在程序设计语言中并不出现,高级语言避免了显式标号和分支,效率高。不出现,高级语言避免了显式标号和分支,效率高。2012201243华东师范大学计算机科学技术系六、分支指令六、分支指令循环循环: :编译一个编译一个C C语言语言whilewhile循环循环C C语言:语言: while (while (saveisavei=k)=k) i+=1; i+=1;设:设:i,ki,k对
48、应对应$s3,$s5,$s3,$s5,数组数组savesave的基址在的基址在$s6$s6中中MIPSMIPS汇编指令:汇编指令:LoopLoop:sllsll $t1,$s3,2 ;i $t1,$s3,2 ;i4 4送送$t1($t1(数组地址偏移量)数组地址偏移量) add $t1,$t1,$s6 ;$t1add $t1,$t1,$s6 ;$t1为数组地址为数组地址 lwlw $t0,0($t1) ;( $t0,0($t1) ;(saveisavei) $t0) $t0 bnebne $t0,$s5,Exit;(savei) k, $t0,$s5,Exit;(savei) k,转转Exit
49、Exit addiaddi $s3,$s3,1 ;i=i+1 $s3,$s3,1 ;i=i+1 j Loop ;go to Loop j Loop ;go to LoopExit: Exit: 2012201244华东师范大学计算机科学技术系2.3 2.3 计算机中指令的表示计算机中指令的表示七、比较指令七、比较指令sltslt $t0,$s3,$s4 $t0,$s3,$s4 ; ; 若若($s3)($s3)($s4),($s4),则置则置 “1 1”$t0$t0sltislti $t0,$s2,10 $t0,$s2,10 ; ;若若($s2)($s2)10,10,则置则置“1 1”$t0$t
50、0小结见小结见P45P45,46 46 图图2-122-12、图、图2-132-132012201245华东师范大学计算机科学技术系2 计算机指令2.1 2.1 概述概述2.2 2.2 计算机硬件的操作计算机硬件的操作2.3 2.3 计算机中指令的表示计算机中指令的表示2.4 2.4 计算机硬件的过程支持计算机硬件的过程支持2012201246华东师范大学计算机科学技术系2.4 计算机硬件的过程支持计算机硬件的过程支持在过程运行期间程序必须遵循六个步骤:在过程运行期间程序必须遵循六个步骤: 将参数放在过程可以获取的位置将参数放在过程可以获取的位置 向过程传递控制向过程传递控制 获得过程所需的存
51、储资源获得过程所需的存储资源 执行需要的任务执行需要的任务 将结果的值放在调用程序可以获取的地方将结果的值放在调用程序可以获取的地方 将控制返回初始点将控制返回初始点充分利用寄存器:充分利用寄存器: $a0 $a0$a3$a3:四个参数寄存器,用于传递参数;:四个参数寄存器,用于传递参数; $v0 $v0$v1$v1:两个储值寄存器,用于返回值;:两个储值寄存器,用于返回值; $ $rara: 一个返回地址寄存器,用于返回初始点一个返回地址寄存器,用于返回初始点2012201247华东师范大学计算机科学技术系2.4 计算机硬件的过程支持计算机硬件的过程支持 过程指令(跳转过程指令(跳转- -链
52、接指令):链接指令): JalJal ProcedureAddressProcedureAddress ; ;跳转到某个地址,并在跳转到某个地址,并在 $ $rara中保留返回地址中保留返回地址 返回地址:返回地址:($($rara) = (PC) + 4) = (PC) + 4程序计数器程序计数器 寄存器跳转指令(返回指令):寄存器跳转指令(返回指令): jrjr $ $rara ;无条件跳转到寄存器所指地址;无条件跳转到寄存器所指地址 调用者根据需要将参数放在调用者根据需要将参数放在$a0$a0$a3$a3中中 执行执行jaljal X X跳转到过程跳转到过程X X 被调用者执行运算,将结
53、果放在被调用者执行运算,将结果放在$v0$v0、$v1$v1中中 执行返回指令执行返回指令jrjr $ $rara,返回断点处,返回断点处2012201248华东师范大学计算机科学技术系2.4 计算机硬件的过程支持计算机硬件的过程支持一、使用更多寄存器一、使用更多寄存器若希望传递更多的参数若希望传递更多的参数使用使用堆栈堆栈将主存的某一部分设置为堆栈区,堆栈能够具有程序将主存的某一部分设置为堆栈区,堆栈能够具有程序员要求的任意长度员要求的任意长度, ,是一组能存储和取出数据的暂时存是一组能存储和取出数据的暂时存储单元储单元, , 堆栈和其他形式存储器之间的差别就在于,堆栈和其他形式存储器之间的
54、差别就在于,它们对数据的存取方法或寻址方法有所不同它们对数据的存取方法或寻址方法有所不同 需要设置一个需要设置一个栈指针栈指针,它是,它是CPUCPU中一个专用的寄存器,中一个专用的寄存器,MIPSMIPS的栈指针为的栈指针为$sp$sp栈指针指定的存储器单元,就是堆栈的栈顶栈指针指定的存储器单元,就是堆栈的栈顶堆栈操作:对栈顶操作,先进后出堆栈操作:对栈顶操作,先进后出 压栈压栈(push) (push) 出栈出栈(pop)(pop)2012201249华东师范大学计算机科学技术系 堆栈堆栈进栈操作进栈操作堆栈指示器堆栈指示器($sp)302H302H301H301H300H300H2FFH
55、2FFH2FEH2FEH2FDH2FDH2FCH2FCH300Ha寄存器寄存器进栈以前进栈以前存储器存储器302H302H301H301H300H300H2FFH2FFHa2FEH2FEH2FDH2FDH2FCH2FCH2FFH堆栈指示器堆栈指示器($sp)a寄存器寄存器进栈以后进栈以后存储器存储器栈顶栈顶栈顶栈顶进栈操作可描述如下:进栈操作可描述如下: 由指令把栈顶地址送入由指令把栈顶地址送入$sp$sp,指针指向栈顶指针指向栈顶 进栈:进栈:($sp$sp)1 $sp1 $sp , ,(寄存器)(寄存器) MspMsp 先修改指针先修改指针, ,指向空位,再指向空位,再存入数据存入数据Ms
56、pMsp表示栈指表示栈指针指示的存储器栈顶单元针指示的存储器栈顶单元栈指针指向满栈顶栈指针指向满栈顶2012201250华东师范大学计算机科学技术系 堆栈堆栈出栈操作出栈操作出栈操作描述如下:出栈操作描述如下: ($SP$SP)= 2FDH= 2FDH,指针指向栈顶指针指向栈顶 出栈:出栈: (MspMsp) 寄存器寄存器, , ($ $spsp)11$ $spsp 先取出数据,后先取出数据,后修改指针修改指针302H302H301H301H300H300H2FFH2FFHa a2FEH2FEHb b2FDH2FDHc c2FCH2FCH2FDH寄存器寄存器出栈以前出栈以前存储器存储器302H
57、302H301H301H300H300H2FFH2FFHa a2FEH2FEHb b2FDH2FDHc2FCH2FCH2FEHc寄存器寄存器出栈以后出栈以后存储器存储器栈顶栈顶栈顶栈顶堆栈指示器堆栈指示器($sp)堆栈指示器堆栈指示器($sp)2012201251华东师范大学计算机科学技术系一、使用更多寄存器一、使用更多寄存器例例1313)编译一个不调用其他过程的)编译一个不调用其他过程的C C过程过程intint leaf_example(intleaf_example(int g,intg,int h,inth,int i,inti,int j) j) intint f; f; f=( f
58、=(g+h)-(i+jg+h)-(i+j);); return f; return f; 编译:编译:参变量参变量g,h,i,jg,h,i,j对应参数寄存器对应参数寄存器$a0$a0$a3$a3返回值返回值f f对应对应$s0$s02012201252华东师范大学计算机科学技术系例例13)leaf_exampleleaf_example: : 图图2-142-14addiaddi $sp,$sp,-12 ; $sp,$sp,-12 ;过程中用到三个寄存器,将旧过程中用到三个寄存器,将旧swsw $t1,8($sp) $t1,8($sp) 值压栈值压栈(push)(push)swsw $t0,4
59、($sp) $t0,4($sp)swsw $s0,0($sp) $s0,0($sp)add $t0,$a0,$a1 ;($t0)= g + hadd $t0,$a0,$a1 ;($t0)= g + hadd $t1,$a2,$a3 ;($t1)= i + jadd $t1,$a2,$a3 ;($t1)= i + jsub $s0,$t0,$t1 ;($s0)=(sub $s0,$t0,$t1 ;($s0)=(g+h)-(i+jg+h)-(i+j) )add $v0,$s0,$zer0 ;($v0)=($s0),add $v0,$s0,$zer0 ;($v0)=($s0),复制到返回值寄存器复制
60、到返回值寄存器lwlw $s0,0($sp) ; $s0,0($sp) ;恢复原寄存器值恢复原寄存器值(pop)(pop)lwlw $t0,4($sp) $t0,4($sp)lwlw $t1,8($sp) $t1,8($sp)addiaddi $sp,$sp,12 $sp,$sp,12JrJr $ $rara ; ;返回断点处返回断点处MIPSMIPS将将1818个寄存器分成二组:个寄存器分成二组: $t0 $t0$t9$t9:1010个临时寄存器,过程调用中不必保存;个临时寄存器,过程调用中不必保存; $S0 $S0$S7$S7:8 8个保留寄存器,个保留寄存器,过程调用中必须被保存。过程调用中必须
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河南科技职业大学单招职业适应性测试题库及答案详细解析
- 2026年阳江职业技术学院单招综合素质考试题库有答案详解
- 2025-2026学年江门市中考押题化学预测卷(含答案解析)
- 2026年福建省福州市高职单招职业适应性测试考试题库与答案详解
- 2026年鹤壁汽车工程职业学院单招综合素质考试题库带答案详解
- 2026年兰州资源环境职业技术大学单招职业技能考试题库有答案详解
- 2026年汕头职业技术学院单招综合素质考试题库与答案详解
- 2026年陕西省榆林市高职单招职业技能考试题库与答案详解
- 2026年云南省临沧市高职单招职业适应性测试考试题库附答案详解
- 2026年青海省海东市高职单招综合素质考试题库附答案详解
- 纳税人员财会制度
- HGT 4754-2014 钢制发酵容器技术条件
- 消毒供应室操作流程及规范
- 超声科科普知识宣传
- 《学校管理学》课件
- 《乙肝防治指南》课件
- GB/T 2881-2023工业硅
- 农行校园招聘试题及答案
- 江川-通海-华宁生活垃圾焚烧发电项目环评报告
- 第十一章-美育-(《美学原理》PPT课件)
- 15D501建筑物防雷设施安装图集
评论
0/150
提交评论