- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
02MachineStru
CS61C L221 Performance ? UC Regents 复习 MIPS汇编语言中: 寄存器=变量 一行一条指令 (简单操作) Simpler is Better, Smaller is Faster 新指令New Instructions: add, addi, sub 新寄存器: C 变量: $s0 - $s7 临时变量(temporary): $t0 - $t7 Zero: $zero 课堂小测验 在C语言中变量类型通过声明来指定,而在MIPS汇编语言中变量类型由指令(操作符)指定. 由于仅有8个局部变量($s) 和8个临时($t) 变量, 因此对于多于16个变量的C表达式,我们无法转换为MIPS汇编语言. 如果p(存储在$s0中) 是指向int数组的指令, 则p++; 可翻译成 addi $s0 $s0 1 立即数(Immediates) 立即数:数值常数 代码中经常出现,因此有专门的指令. 加立即数指令(Add Immediate): addi $s0,$s1,10 (in MIPS) f = g + 10 (in C) 这里MIPS寄存器 $s0,$s1对应于C变量f,g 语法和add指令类似 区别:最后一个参数是数,而不是寄存器 register 减立即数指令(Sub Immediate)? 立即数(Immediates) 没有减立即数!Why? 要让最少量的指令来实现功能 如果指令可以分解(或者减化)为更简化的形式,就略去该指令 subi …, X = addi …, -X = so no subi addi $s0,$s1,-10 (in MIPS) f = g - 10 (in C) 这里MIPS寄存器$s0,$s1对应于C变量f,g 汇编操作数: 内存(Memory) C变量映射到寄存器,但寄存器有限 超过32个元素的数组怎么办? 一般把这种数据结构放在内存memory中 MIPS算术指令仅能对寄存器操作,不能直接操作内存. 数据传送指令 在寄存器和内存之间传送数据: 内存到寄存器 寄存器到内存 透析: 任何计算机的5个组成部分 数据传送: Memory to Reg (1/4) 传送一个字的数据, 需要指定两件事情: 寄存器: 通过寄存器号码 ($0 - $31)或者符号名 ($s0,…, $t0, …)来指定 内存地址: 更难一些 把内存看成一维数据, 这样就能通过简单的提供一个指向内存的指针来访问. 另外, 还希望能由访问附近的数据(通过偏移量offset). Remember: “Load FROM memory” Data Transfer: Memory to Reg (2/4) 指定内存地址: 寄存器:包含指向内存的指针 数值偏移量offset (以字节为单位) 内存地址为这两个值的和 例: 8($t0) 内存地址为:$t0的值+8(字节) Data Transfer: Memory to Reg (3/4) Load 指令语法(Instruction Syntax): 1 2,3(4) where 1) 指令名字(operation name) 2) 接收值的寄存器(register that will receive value) 3) 数值偏移量(单位:字节)numerical offset in bytes 4) 包含指向内存指针的寄存器(register containing pointer to memory) MIPS 指令名字(Instruction Name): lw (意即Load Word, 故每次装入32位即一个字) Data Transfer: Memory to Reg (4/4) 例: lw $t0,12($s0) 该指令取出$s0中的指针, 加上12, 然后从计算的和所指的位置的内存中取得值,放到$t0中 Notes: $s0 称为 基寄存器base register 12 称为 偏移offset 偏移通常用于访问结构体或数组的元素: 基寄存器指向结构体或数组的起始位置(注意偏移量必须是常数 (即在编译时已知)). 数据传送: Reg to Memory 希望把寄存器的值存储(Store)到内存中 语法:和Load类似 MIPS指令名字: sw (即Store Word, 每次存储32位或一个字) 例: sw $t0,12($s0) 该指令将$s0中的指针加上12,得到内存地址,然后把寄存器$t0中的值存储到该内存地址中 Remember: “Store INTO memory” Pointers v. Values 重要概念: 寄存器可以保存任意32-位数值. 该值可以是 (sig
您可能关注的文档
- 护理质量管理手册(2013年).doc
- 会计继续教育多选题.doc
- 林业建设项目咨询工程师继续教育.doc
- 2012年报检员考试自理报检单位习题及答案.doc
- C疗机构校验申请书(示范文本)业务表格.doc
- 达内TSD第三阶段月考题.doc
- 财务会计-中级财务会计第2次作业.doc
- 2014年山东省会计继续教育(会计基础理论和企业经济业务)考试答案-90分以上.doc
- 报关员精讲班作业卷答案-83.doc
- 继续教育《首次执行企业会计准则操作指南》考试题.doc
- [中央]2023年中国电子学会招聘应届生笔试历年参考题库附带答案详解.docx
- [吉安]2023年江西吉安市青原区总工会招聘协理员笔试历年参考题库附带答案详解.docx
- [中央]中华预防医学会科普信息部工作人员招聘笔试历年参考题库附带答案详解.docx
- [保定]河北保定市第二医院招聘工作人员49人笔试历年参考题库附带答案详解.docx
- [南通]江苏南通市崇川区人民法院招聘专职人民调解员10人笔试历年参考题库附带答案详解.docx
- [厦门]2023年福建厦门市机关事务管理局非在编工作人员招聘笔试历年参考题库附带答案详解.docx
- [三明]2023年福建三明市尤溪县招聘小学幼儿园新任教师79人笔试历年参考题库附带答案详解.docx
- [哈尔滨]2023年黑龙江哈尔滨市木兰县调配事业单位工作人员笔试历年参考题库附带答案详解.docx
- [上海]2023年上海市气象局所属事业单位招聘笔试历年参考题库附带答案详解.docx
- [台州]2023年浙江台州椒江区招聘中小学教师40人笔试历年参考题库附带答案详解.docx
文档评论(0)