指令系统与汇编程序设计实例.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
指令系统与汇编程序设计实例

* 指令系统与汇编程序设计实例 MIPS处理器的主要特征 指令系统简单 所有的指令都是32位宽度 指令格式共三种 立即数型、转移型和寄存器型。 操作数寻址方式有三种 基址加16位位移量的访存寻址 立即数寻址 寄存器寻址 * MIPS处理器的主要特征 指令系统简单 采用流水技术 依靠优化编译器进行指令序列的重新安排 以防止流水线中出现的相互冲突 使用较多寄存器 32个通用寄存器 表示为$0到$31 $0固定为0 一对存储64位数据的寄存器Hi,Lo 用于存放定点乘法的结果 异常PC寄存器epc 采用“比较与转移”指令 比较和转移这两个动作在一条指令内便可完成 beq $1, $2, 1000 没有状态寄存器 * MIPS算术指令 * MIPS逻辑指令 * MIPS数据传递指令 * MIPS条件转移指令 * MIPS无条件转移指令 * MIPS指令操作码定义 * MIPS R格式指令扩展操作码定义 * 例 根据MIPS指令操作码定义以及指令格式,给出以下指令的各个字段的十进制值: add $8, $17,$18 答:指令是R格式指令。 第一个字段和最后一个字段的值分别为0和32。 第二个字段为17 第三个字段为18 第四个字段为8 第五个字段未使用 被设置为0 0 17 18 8 0 32 * 汇编程序设计的简单例子 例1 假定以下一段C语言程序中包含的变量a, b, c, d, e分别存放在寄存器$1到$5中, a=b+c; d=a-e; 写出编译后的MIPS汇编语言指令序列。 答:MIPS指令对两个源操作数进行计算,并产生一个结果,上述两个语言可以直接转换成两条指令: add $1, $2, $3 sub $4, $1, $5 * 汇编程序设计的简单例子 例2 将以下C语言的语句 f=(g+h)-(i+j); 用MIPS汇编语言表示,假定变量f,g,h,i,j分别分配到寄存器$16, $17, $18, $19,$20中,寄存器$8和$9存放临时计算结果, 解: add $8, $17, $18 add $9, $19, $20 sub $16, $8, $9 * 汇编程序设计的简单例子 例 3 将以下C语言的语句写成MIPS汇编指令表示 g=h+A[i]; 这里A是具有100个元素的数组,在内存中的起始地址用Astart表示,假定编译程序将变量g, h和i分别分配给寄存器$17, $18和$19。 解:add $20, $19, $19 add $19, $20, $20 lw $8, Astart($19) add $17, $18, $8 * 汇编程序设计的简单例子 例4 如果将上例C语句改为 A[i]=h+A[i]; 写出相应的MIPS汇编指令序列。假定编译程序将变量g, h和4i分别分配给寄存器$17, $18和$19。 解: lw $8, Astart($19) add $8, $18, $8 sw $8, Astart($19) * 汇编程序设计的简单例子 例5 将以下C语言程序写成MIPS汇编指令序列,并画出其流程图。 if(i==j) goto L1; f=g+h; L1: f=f-i; 假定5个变量f,g,h,i,j分别存放在$16到$20中。 解: beq $19, $20, L1 add $16, $17, $18 L1: sub $16, $16, $19 * 汇编程序设计的简单例子 例6 将上述C程序改为 if(i==j) f=g+h; else f=g-h; 写出相应的MIPS汇编指令。 答: bne $19, $20, Else add $16, $17, $18 j Exit Else: sub $16, $17, $18 Exit: * 汇编程序设计的简单例子 例7 下面是一个C语言表示的循环语句: while(save[i]==k) i=i+j; 假定变量i,j,k存储在寄存器$19, $20, $21中,数组save 的起始存放在地址存放在$6中,写出相应的MIPS汇编语言指令序列。 答:loop:add $7, $19, $19 add $7, $7, $7 add $7, $7, $6 lw $8, 0($7) //计算数组save[i]的地址??? bne $8, $21, Exit add $19, $19, $20 j loop Exit: * 汇编程序设计的简单例子 例 8 对于以下C语言语句: if(ab) goto less; 它判断变量a是否小于b,条件满足时转移到标号less,假如a和b分别存放在寄存器$1和$2中,写

文档评论(0)

pengyou2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档