课程资源计算机组织与结构chapter_第1页
课程资源计算机组织与结构chapter_第2页
课程资源计算机组织与结构chapter_第3页
课程资源计算机组织与结构chapter_第4页
课程资源计算机组织与结构chapter_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

第四章指令系统

(一)

指令系统分以下五个部分介绍第一讲:指令系统概述指令格式设计指令系统设计第二讲:指令系统实例IA-32指令系统第三讲:

程序的机器级表示选择语句的机器级表示循环结构的机器级表示过程调用的机器级表示指令系统概述…,EXTop=1,ALUSelA=1,ALUSelB=11,ALUop=add,IorD=1,Read,MemtoReg=1,RegWr=1,......temp=v[k];v[k]=v[k+1];v[k+1]=temp;lw$15,0($2)lw$16,4($2)sw$16,0($2)sw$15,4($2)10001100010

01111

000000000000000010001100010

10000

000000000000010010101100010

10000

000000000000000010101100010

01111

0000000000000100软件硬件汇编指令机器指令…11111001011…微指令“指令”的概念计算机中的指令有微指令、机器指令和伪(宏)指令之分机器指令处于硬件和软件的交界面相当于一个菜谱指定的一个完整做菜过程本章中提及的指令都指机器指令微指令是微程序级命令,属于硬件范畴

相当于洗、切、煮、炒等做菜“微过程“伪指令是由若干机器指令组成的指令序列,属于软件范畴相当于由多个菜谱合成一个”大菜“的过程汇编指令是机器指令的汇编表示形式,即符号表示机器指令和汇编指令一一对应,它们都与具体机器结构有关,都属于机器级指令

指令格式设计程序启动前,指令和数据都存放在存储器中,形式上没有差别,都是0/1序列采用”存储程序“工作方式:程序由指令组成,程序被启动后,计算机能自动取出一条一条指令执行,在执行过程中无需人的干预。指令执行过程中,指令和数据被从存储器取到CPU,存放在CPU内的寄存器中指令中需给出的信息:1、操作性质(操作码)2、源操作数1或/和源操作数2

(立即数、寄存器编号、存储地址)3、目的操作数地址(寄存器编号、存储地址)4、下一条指令地址I/OCPUCompilerOperatingSystemApplicationDigitalDesignCircuitDesignInstructionSetArchitectureMMAssembler指令集体系结构ISAISA(InstructionSetArchitecture)位于软件和硬件之间硬件的功能通过ISA提供出来软件通过ISA规定的”指令”使用硬件ISA规定了:可执行的指令的集合,包括指令格式、操作种类以及每种操作对应的操作数的相应规定;指令可以接受的操作数的类型;操作数所能存放的寄存器组的结构,包括每个寄存器的名称、编号、长度和用途;操作数所能存放的存储空间的大小和编址方式;操作数在存储空间存放时按照大端还是小端方式存放;指令获取操作数的方式,即寻址方式;指令执行过程的控制方式,包括程序计数器、条件码定义等。指令格式设计原则指令应尽量短要有足够的操作码操作码的编码必须有唯一的解释指令长度应是字节的整数倍合理选择地址字段的个数指令应尽量规整指令系统设计基本原则:完备性或完整性、兼容性、均匀性、可扩充性基本问题:操作码的个数、种类、复杂度如何选择?运算指令能对哪几种数据类型进行操作?采用什么样的指令格式?通用寄存器的个数、功能、长度等如何规定?如何设计寻址方式下条指令的地址如何确定?操作数类型

操作数是指令处理的对象,从高级语言程序所用数据类型来看,指令涉及到的基本操作数类型应该包括以下几类:指针或地址无符号整数,用来表示指针或主(虚)存地址。数值数据带符号整数和浮点数。带符号整数一般用二进制补码表示,浮点数大多用IEEE754标准表示。位、位串、字符和字符串位和位串数据一般用来表示一些标志、控制和状态等信息。字符和字符串数据用来表示文本、流式文件基本信息等。逻辑(布尔)数据逻辑值。寻址方式指令给出操作数或操作数地址的方式称为寻址方式立即寻址:在指令中直接给出操作数本身直接寻址:指令中给出的地址码是操作数的有效地址间接寻址:指令中给出的地址码是存放操作数有效地址的主存单元地址寄存器寻址:指令中给出的地址码是操作数所在的寄存器编号寄存器间接寻址:指令中给出的地址码是一个寄存器编号,该寄存器中存放的是操作数的有效地址变址寻址:EA=(I)+A,其中(I)表示变址寄存器I的内容相对寻址:EA=(PC)+A基址寻址:EA=(B)+A其它寻址:操作类型(1)算术运算指令加/减运算(影响标志、不区分无/带符号)ADD:加,包括addb、addw、addl等SUB:减,包括subb、subw、subl等增1/减1运算(影响除CF以外的标志、不区分无/带符号)INC:加,包括incb、incw、incl等DEC:减,包括decb、decw、decl等取负运算(影响标志、若对0取负,则结果为0/CF=0,否则CF=1)NEG:取负,包括negb、negw、negl等比较运算(做减法得到标志、不区分无/带符号)CMP:比较,包括cmpb、cmpw、cmpl等乘/除运算(不影响标志、区分无/带符号)MUL/IMUL:无符号乘/带符号乘DIV/IDIV:带无符号除/带符号除操作类型(续)(2)按位运算指令逻辑运算(仅NOT不影响标志,其他指令OF=CF=0,而ZF和SF根据结果设置:若全0,则ZF=1;若最高位为1,则SF=1)NOT:非,包括notb、notw、notl等AND:与,包括andb、andw、andl等OR:或,包括orb、orw、orl等XOR:异或,包括xorb、xorw、xorl等TEST:做“与”操作测试,仅影响标志移位运算(左/右移时,最高/最低位送CF)SHL/SHR:逻辑左/右移,包括shlb、shrw、shrl等SAL/SAR:算术左/右移,左移判溢出,右移高位补符(移位前、后符号位发生变化,则OF=1)ROL/ROR:循环左/右移,包括rolb、rorw、roll等RCL/RCR:带循环左/右移,将CF作为操作数一部分循环移位操作类型(续)(3)传送指令通用数据传送指令MOV:一般传送,包括movb、movw和movl等MOVS:符号扩展传送,如movsbw、movswl等MOVZ:零扩展传送,如movzwl、movzbl等XCHG:数据交换PUSH/POP:入栈/出栈,如pushl,pushw,popl,popw等(4)串指令对字符串进行操作的指令。如串传送、串比较、检索和传送转换等指令。操作类型(续)(5)顺序控制指令

指令执行可按顺序或跳转到转移目标指令处执行无条件转移指令JMPDST:无条件转移到目标指令DST处执行条件转移JccDST:cc为条件码,根据标志(条件码)判断是否满足条件,若满足,则转移到目标指令DST处执行,否则按顺序执行条件设置SETccDST:将条件码cc保存到DST(通常是一个8位寄存器)调用和返回指令

(用于过程调用)CALLDST:返回地址RA入栈,转DST处执行RET:从栈中取出返回地址RA,转到RA处执行中断指令操作类型(续)(6)CPU控制指令这类指令有停机、开中断、关中断、系统模式切换以及进入特殊处理程序等指令。大多数机器将这类指令划为“特权”指令(也称为管态指令)(7)输入输出指令用于完成CPU与外部设备交换数据或传送控制命令及状态信息,操作码编码1.定长操作码编码固定长度编码译码方便指令执行速度快但有信息冗余IBM360/370采用8位定长操作码2.扩展操作码编码几种固定长度的格式采用等长4-8-12、3-6-9不等长扩展PDP-11操作码编码设计举例例4.1设某指令系统的指令字为16位,每个地址码为6位。若二地址指令15条,单地址指令34条,则剩下的零地址指令最多有多少条?解:操作码按短到长进行扩展编码。二地址指令操作码最短,零地址指令的操作码最长,所以,按照二地址→单地址→零地址的顺序进行。二地址指令的地址码部分占12位,故操作码只有4位,最多有16种编码,用(0000~1110)分别表示15条指令,还剩一种编码1111未使用。单地址指令的地址码部分占6位,故操作码有10位,最高4位为1111,还剩6位,最多可有26=64种编码,用其中的32+2=34种编码(1111000000~1111011111和1111100000~1111100001)分别表示34条一地址指令。剩下的零地址指令共有16位操作码,其中高5位只能是11111,所以编码范围为:11111(00010~11111)(000000~111111),也即,高5位为11111,次5位为00010~11111,低6位为000000~111111。因此,零地址指令最多有30×26种编码可用。标志信息的生成与使用标志信息也称为条件码(ConditionCodes,简称CC)或状态位(Status)(1)根据单个标志的值转移(2)按无符号整数比较转移(3)按带符号整数比较转移标志信息是干什么的?Ex1:-7-6=-7+(-6)=+36-(-7)=6+7=-3

9-6=3

6-9=1311+000111100010做减法以比较大小,规则:Unsigned:CF=0时,大于Signed:OF=SF时,大于OF=1、ZF=0SF=0、借位CF=0+1101101001111010OF=1、ZF=0SF=1、借位CF=1例子:C表达式类型转换顺序unsignedlonglong↑longlong↑unsigned↑

int↑(unsigned)char,short条件设置指令:SETccDST:将条件码cc保存到DST(通常是8位寄存器)猜测:各用哪种条件设置指令?指令系统设计风格1.按操作数位置指定风格来分(1)累加器(Accumulator)型指令系统总是把其中一个操作数隐含在累加器(AC)中指令执行的结果也总是送到累加器中(2)栈(Stack)型指令系统指令的操作数总是来自栈顶都是零地址或一地址指令灵活性不够(3)通用寄存器型指令系统操作数可以是立即数(I),或来自通用寄存器(R),或来自存储单元(S)(4)Load/Store型指令系统只有取数(Load)指令和存数(Store)指令才可以访问存储器按指令格式的复杂度来分早期CISC设计风格的主要特点(1)指令系统复杂

变长操作码/变长指令字/指令多/寻址方式多/指令格式多(2)指令周期长

绝大多数指令需要多个时钟周期才能完成(3)各种指令都能访问存储器

除了专门的存储器读写指令外,运算指令也能访问存储器

(4)采用微程序控制(5)有专用寄存器(6)难以进行编译优化来生成高效目标代码例如,VAX-11/780小型机16种寻址方式;9种数据格式;303条指令;一条指令包括1~2个字节的操作码和下续N个操作数说明符。一个说明符的长度达1~10个字节。按指令格式的复杂度来分,有两种类型计算机:复杂指令集计算机CISC(ComplexInstructionSetComputer)精简指令集计算机RISC(Reduce

InstructionSetComputer)复杂指令集计算机CISC对CISC进行测试,发现一个事实:在程序中各种指令出现的频率悬殊很大,最常使用的是一些简单指令,这些指令占程序的80%,但只占指令系统的20%。而且在微程序控制的计算机中,占指令总数20%的复杂指令占用了控制存储器容量的80%。1982年美国加州伯克利大学的RISCⅠ,斯坦福大学的MIPS,IBM公司的IBM801相继宣

温馨提示

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

评论

0/150

提交评论