计算机组成原理 MIPS 02PPT课件_第1页
计算机组成原理 MIPS 02PPT课件_第2页
计算机组成原理 MIPS 02PPT课件_第3页
计算机组成原理 MIPS 02PPT课件_第4页
计算机组成原理 MIPS 02PPT课件_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

2020/5/25,.,第二章指令系统,2020/5/25,.,指令与指令系统指令的格式,指令格式:操作码,地址码一、操作码opcode固定长度操作码:便于译码,扩展性差可变长度操作码:能缩短指令平均长度二、地址码addressingcode零地址指令,如NOP,CLR一地址指令,如INCR1二地址指令,如ADDR1,R2三地址指令,如ADDR1,R2,R3,寻址方式,立即数,2020/5/25,.,例1设某台计算机有100条指令,(1)采用固定长度操作码编码,试设计其操作码的编码。(2)假如这100条指令中有10条指令的使用概率达到90%,其余90条指令的使用概率为10%。试采用不等长编码设计操作码。,解:(1)采用固定长度操作码编码时,需要7位操作码。取其中的100个代码作为指令操作码,可以用0000000到1100011之间的代码代表100条指令,即0000000指令0的操作码0000001指令1的操作码1100011指令99的操作码剩下从1100100到1111111共28个代码可用于增加新指令,每条指令的操作码的长度都是7。,2020/5/25,.,(2)用4位代码对10条常用指令进行编码,用8位代码对90条不常用代码进行编码,即0000指令0的操作码0001指令1的操作码1000指令8的操作码1001指令9的操作码10100000指令10的操作码10100001指令11的操作码11111001指令99的操作码指令操作码的平均长度为490%+810%=4.4位比等长编码的7位小。,例1设某台计算机有100条指令,(1)采用固定长度操作码编码,试设计其操作码的编码。(2)假如这100条指令中有10条指令的使用概率达到90%,其余90条指令的使用概率为10%。试采用不等长编码设计操作码。,2020/5/25,.,例2若某计算机要求有如下形式的指令:三地址指令12条,二地址指令60条,零地址指令16条(不要求有单地址指令)。设指令字长为16位,每个地址码长为4位,试用扩展操作码为其编码。,解:三个地址码12条指令的操作码分别为0000、0001、0010、1011在双地址指令1100000011111011零地址指令11111100000000001111110000001111,2020/5/25,.,指令的格式,三、指令长度固定长度取指快、译码简单。单字长、双字长、多字长可变长度可提高编码效率四、指令助记符伪指令、累加器,通用寄存器Add$1,$2,$3,ADD,R1,load,2020/5/25,.,数据的类型及其存储方式,操作数的类型整型数、单精度和双精度浮点数、字符型数据长度:单字节、双字节、字、双字、四倍字操作数的存储方式大数端(bigEndian)和小数端(littleEndian),2020/5/25,.,数据的类型及其存储方式,数据对齐方式,如何判断字对齐?,2020/5/25,.,字不对齐方式下的数据存储,访存次数问题Charc;Shortinti,j;intk;跨页问题,Charc,Shortinti,Intk,Shortj,Shortj,Intk,2020/5/25,.,字对齐方式下的数据存储,空间浪费问题Charc;Shortinti,j;intk;,c,i,k,j,2020/5/25,.,字对齐方式下的存储器访问,速度较高接口较简单,CPU,Byte3,Byte2,Byte1,Byte0,寄存器,存储器,Byte3,Byte2,Byte1,Byte0,2020/5/25,.,字不对齐方式下的存储器访问,节省空间访存速度慢接口复杂,2020/5/25,.,数据存储方式的例子,2020/5/25,.,数据对齐的例子试改变以下数据结构定义以减少对齐的开销,structLooseshorts;/16bitintI;/32bitcharc;/8bitFoo*p;/64bit;,structTightFoo*P;inti;shorts;charc;,2020/5/25,.,寻址方式,按地址寻找与按内容寻找寻址方式地址码形成操作数存储位置的方式,2020/5/25,.,寻址方式,1.隐含方式如ADDA中的累加器2.立即数方式如INT#33.寄存器方式如INCR1,操作数,2020/5/25,.,4.直接寻址如INC1000,操作数,寻址方式,2020/5/25,.,寻址方式5.寄存器间接如INC(R1),A,操作数,2020/5/25,.,寻址方式6.存储器间接如INC(1000),A,操作数,2020/5/25,.,寻址方式7.相对寻址如INC8(PC),操作数,2020/5/25,.,寻址方式8.变址和基址寻址如INC8(R1),变址寻址:便于数组访问基址寻址:可扩大寻址范围,可实现程序浮动,I,操作数,2020/5/25,.,寻址方式9.复合寻址如INC8(PC+R1)、INC(R1)(1000),2020/5/25,.,例3,设一条32位指令的存储地址是0 x00001000,操作数采用相对寻址,偏移量为8位补码11110000,问数据地址是多少?,2020/5/25,.,例4,一条双字长的load指令存储在地址为200和201的存储位置,该指令将地址码指定的存储器内容装入累加器AC。指令的第一个字指定操作码和寻址方式,第二个字是地址部分。PC寄存器的值是200。通用寄存器R1的值是400,变址寄存器XR的内容是100。指出在各种寻址方式访问的数据。,2020/5/25,.,直接寻址方式,装入AC的操作数是800。在立即数寻址方式下,将500装入AC。在间接寻址方式下,操作数是300。在相对寻址方式下,操作数是325。在变址寻址方式下,操作数是900。在寄存器R1寻址方式下,400装入AC。在寄存器R1间接寻址方式下,装入AC的700。,解,2020/5/25,.,一条双字长的指令存储在地址为W的存储器中。指令的地址字段位于地址为W+1处,用Y表示。在指令执行中使用的操作数存储在地址为Z的位置。在一个变址寄存器中包含X的值。试叙述Z是怎样根据其他地址计算得到的,假定寻址方式为(1)直接寻址(2)间接寻址(3)相对寻址(4)变址寻址,例5,2020/5/25,.,(1)在直接寻址方式下,Z=Y。(2)在存储器间接寻址方式下,Z=(Y)。(3)在相对寻址方式下,Z=W+Y+2。(4)在变址寻址方式下,Z=X+Y。,解,2020/5/25,.,一条相对转移指令长4个字节,存储在存储器中地址为75010的地方,转移目标地址为50010。问(1)指令执行之后PC的值为多少?(2)指令的相对地址字段的值为多少?(3)如果采用补码表示相对地址字段,该指令的相对地址字段需要多少二进制位?,例6,2020/5/25,.,解,(1)指令执行之后PC的值为50010。(2)相对转移指令中的地址偏移量应为500-754=-254(3)相对地址字段需要9个二进制位。,2020/5/25,.,寻址方式的汇编指令表示,2020/5/25,.,指令的访存类型,堆栈型累加器型通用寄存器型寄存器-寄存器型寄存器存储器型存储器-存储器型,2020/5/25,.,指令的访存类型的比较,2020/5/25,.,指令集,数据传送:move,load,store算术运算:add,sub,mult,div,comp逻辑运算:and,or,neg,shift程序控制:jump,branch,jsr,ret,int输入输出:in,out堆栈操作:push,pop字符串:MOVS,CMPS,SCAS,LODS,STOS系统指令:HALT,2020/5/25,.,转移指令,如:jump$1000bgtR1条件转移vs无条件转移相对转移vs绝对转移状态寄存器SRNZVCP,2020/5/25,.,常见的条件转移指令,2020/5/25,.,转子指令,功能实现子程序调用步骤将下一条指令的地址(PC的值)存放在一个临时存储位置将子程序的起始地址装入PC中子程序返回指令将存放在临时存储位置的指令地址取出放回PC,2020/5/25,.,指令系统与汇编程序设计实例,MIPS处理器的主要特征指令系统简单所有的指令都是32位宽度指令格式共三种立即数型、转移型和寄存器型。操作数寻址方式有三种基址加16位位移量的访存寻址立即数寻址寄存器寻址,2020/5/25,.,MIPS处理器的主要特征,指令系统简单采用流水技术依靠优化编译器进行指令序列的重新安排以防止流水线中出现的相互冲突使用较多寄存器32个通用寄存器表示为$0到$31$0固定为0一对存储64位数据的寄存器Hi,Lo用于存放定点乘法的结果异常PC寄存器epc采用“比较与转移”指令比较和转移这两个动作在一条指令内便可完成beq$1,$2,1000没有状态寄存器,2020/5/25,.,MIPS算术指令,2020/5/25,.,MIPS逻辑指令,2020/5/25,.,MIPS数据传递指令,2020/5/25,.,MIPS条件转移指令,2020/5/25,.,MIPS无条件转移指令,2020/5/25,.,MIPS指令操作码定义,2020/5/25,.,MIPSR格式指令扩展操作码定义,2020/5/25,.,例10根据MIPS指令操作码定义以及指令格式,给出以下指令的各个字段的十进制值:add$8,$17,$18,答:指令是R格式指令。第一个字段和最后一个字段的值分别为0和32。第二个字段为17第三个字段为18第四个字段为8第五个字段未使用被设置为0,2020/5/25,.,汇编程序设计的简单例子,例11假定以下一段C语言程序中包含的变量a,b,c,d,e分别存放在寄存器$1到$5中,a=b+c;d=a-e;写出编译后的MIPS汇编语言指令序列。答:MIPS指令对两个源操作数进行计算,并产生一个结果,上述两个语言可以直接转换成两条指令:add$1,$2,$3sub$4,$1,$5,2020/5/25,.,汇编程序设计的简单例子,例12将以下C语言的语句f=(g+h)-(i+j);用MIPS汇编语言表示,假定变量f,g,h,i,j分别分配到寄存器$16,$17,$18,$19,$20中,寄存器$8和$9存放临时计算结果,解:add$8,$17,$18add$9,$19,$20sub$16,$8,$9,2020/5/25,.,汇编程序设计的简单例子,例13将以下C语言的语句写成MIPS汇编指令表示g=h+Ai;这里A是具有100个元素的数组,在内存中的起始地址用Astart表示,假定编译程序将变量g,h和i分别分配给寄存器$17,$18和$19。解:add$20,$19,$19add$19,$20,$20lw$8,Astart($19)add$17,$18,$8,2020/5/25,.,汇编程序设计的简单例子,例14如果将上例C语句改为Ai=h+Ai;写出相应的MIPS汇编指令序列。假定编译程序将变量g,h和4i分别分配给寄存器$17,$18和$19。解:lw$8,Astart($19)add$8,$18,$8sw$8,Astart($19),2020/5/25,.,汇编程序设计的简单例子,例15将以下C语言程序写成MIPS汇编指令序列,并画出其流程图。if(i=j)gotoL1;f=g+h;L1:f=f-i;假定5个变量f,g,h,i,j分别存放在$16到$20中。解:beq$19,$20,L1add$16,$17,$18L1:sub$16,$16,$19,2020/5/25,.,汇编程序设计的简单例子,例16将上述C程序改为if(i=j)f=g+h;elsef=g-h;写出相应的MIPS汇编指令。答:bne$19,$20,Elseadd$16,$17,$18jExitElse:sub$16,$17,$18Exit:,2020/5/25,.,汇编程序设计的简单例子,例17下面是一个C语言表示的循环语句:while(savei=k)i=i+j;假定变量i,j,k存储在寄存器$19,$20,$21中,数组save的起始存放在地址存放在$6中,写出相应的MIPS汇编语言指令序列。答:loop:add$7,$19,$19add$7,$7,$7add$7,$7,$6lw$8,0($7)/计算数组savei的地址bne$8,$21,Exitadd$19,$19,$20jloopExit:,2020/5/25,.,汇编程序设计的简单例子,例18对于以下C语言语句:if(ab)gotoless;它判断变量a是否小于b,条件满足时转移到标号less,假如a和b分别存放在寄存器$1和$2中,写出相应的MIPS汇编语言指令序列。答:用小于时置1的指令设置一个临时寄存器($3):slt$3,$1,$2判断a是否小于b,并根据判断的结果进行转移:bne$3,$0,less,2020/5/25,.,汇编程序设计的简单例子,例对于以下C程序段:switch(k)case0:f=i+j;break;case1:f=g+h;break;case2:f=g-h;break;case3:f=i-j;break;假定f到k这6个变量分别存储在寄存器$16到$21,寄存器$10的内容为4,写出相应的MIPS汇编语言指令。答:程序可以中用变量k作为转移目标地址表的索引,首先要检测k的值是否在指定的范围内,即是否满足0k3,如果不满足的话就退出程序。slt$9,$21,$0bne$9,$0,Exitslt$9,$21,$10beq$9,$0,Exit,2020/5/25,.,将k乘以4以形成转移地址。add$9,$21,$21add$9,$9,$9假定转移目标地址表连续,起始地址在$4中,计算对应的入口地址。add$9,$9,$4lw$8,0($9)$8中包含了转移地址,根据$8进行转移jr$8L0:add$16,$19,$20/k=0时,f=i+jjExitL1:add$16,$17,$18/k=1时,f=g+hjExitL2:sub$16,$17,$18/k=2时,f=g-hjExitL3:sub$16,$19,$20/k=3时,f=i-jExit:,汇编程序设计的简单例子,2020/5/25,.,2020/5/25,.,例20,假定子程序A调用子程序B,子程序B调用子程序C。写出实现这个过程的MIPS指令序列,假定$29包含指向栈顶的指针,

温馨提示

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

最新文档

评论

0/150

提交评论