- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]第11章 目标代码生成
中国科大 第十一章 目标代码生成 目标代码的形式 可立即执行的机器语言代码 通常存放在固定的存储区中,编译后可直接执行 节省时间,但缺乏灵活性,只用在程序不长时 待装配的机器语言模块 允许程序模块分别编译 调用其它先前编译好的程序模块 汇编语言代码 必须通过汇编程序将其汇编成可执行的机器语言代码 生成相应的符号化指令,易生成 考虑的两个问题(与目标代码的执行速度有关): 如何使生成的目标代码较短 如何充分利用计算机的寄存器,减少目标代码中访问存储单元的次数 本章内容 11.1 基本问题 11.2 目标机器模型 11.3 一个简单的代码生成器 11.4 寄存器分配 11.5 DAG的目标代码 11.6 窥孔优化 11.1 代码生成器设计中的问题 1、代码生成器的输入 2、目标程序 3、指令选择 4、寄存器分配 5、计算顺序选择 11.1 代码生成器设计中的问题 1、代码生成器的输入 包括源程序的中间表示以及符号表中的信息 11.1 代码生成器设计中的问题 2、 目标程序 代码生成器的输出是目标程序。 通常有三种形式: 绝对机器代码 可重定位机器语言 汇编语言 11.1 代码生成器设计中的问题 3、指令的选择 目标机器指令系统的性质决定了指令选择的难易程度,指令系统的统一性和完备性是重要的因素。如果目标机器不能支持指令集的所有类型,那么每一种例外都需要特别的处理。 指令的速度和机器用语是另一些重要的因素 11.1 代码生成器设计中的问题 若不考虑目标程序的效率,指令的选择是直 截了当的。 三地址语句x := y + z(x,y和z都是静态分配)可以翻译成下列代码序列: LD R0, y /* 把y装入寄存器R0 */ ADD R0 , z /* z加到R0上 */ ST R0, x /* 把R0存入x中 */ 11.1 代码生成器设计中的问题 4、寄存器分配 运算对象处于寄存器中的指令通常比运算对象处于内存的指令要短一些,执行也快一些。因此,如何充分利用计算机的寄存器,对于生成好的代码是非常重要的。 11.1 代码生成器设计中的问题 寄存器的使用可以分成两个子问题: (1)寄存器分配 选择驻留在寄存器中的一组变量 (2)寄存器指派 挑选变量要驻留的具体寄存器 11.1 代码生成器设计中的问题 5、计算次序的选择 顺序的选择会影响目标代码的效率,某种计算次序可能会比其它次序需要较少的寄存器来保存中间结果。 11.2 目标机器模型 要设计代码生成器,需预先熟悉目标机器和 它的指令系统 假设目标机器具有多个通用寄存器,它们 既可以作为累加器,也可以作为变址器。 这台机器含有以下四种类型的指令形式: 以上指令中的运算符(操作码)op包括一般计算机上常见的一些运算符,如: ADD 加 SUB 减 MUL 乘 DIV 除 11.3 一个简单的代码生成器 基本块范围内充分利用寄存器 计算结果留在寄存器中尽可能长的时间, 除非: 该寄存器要用于其它计算,或者 到基本块结束 后续代码尽可能引用变量在寄存器中的值,而不访问主存。 记录代码生成时需收集的信息 待用信息 为了把基本块内还要被引用的变量值尽可能保存在寄存器中,同时把基本块内不再被引用的变量所占用的寄存器及早释放 寄存器描述数组和变量地址描述数组 需掌握各寄存器的情况:空闲的还是已分配给某个变量(或几个变量),数组动态记录 动态记录着各变量现行值的存放位置:是在某寄存器中,还是在某主存单元中,或既在某寄存器中也在某主存单元中 11.4 寄存器分配 如何更有效地利用寄存器 考虑的范围从基本块扩大到循环 不是把寄存器平均分配给各个变量,而是把几个固定分配给几个变量 以各变量在循环内需访问主存单元的次数为准(引入执行代价) 11.5 DAG的目标代码 考虑问题: 为了生成更有效的目标代码,对基本块中中间代码序列,我们应按怎样的次序来生成目标代码呢? 例:考察下面基本块的中间代码序列G 利用DAG,把G改写成中间代码序列G’ 设R0和R1是两个可使用的寄存器。T4是基本块出口之后的活跃变量。G生成的目标代码如下: 从这个例子我们可以看到,生成中间代码序列目标代码的次序,将直接影响到目标代码的质量。 考虑问题: 为什么重新排序后的中间代码序列G’生成的目标代码优于原中间代码序列G生成的目标代码呢? 这是因为在G’中,T4是紧接在其左运算对象之后计算的。 这是因为在G’中,T4是紧接在其左运算对象之后计算的。 这样就可及时利用T1在寄存器中的值来计算T4的值,避免了算好T1
您可能关注的文档
- [工学]电机及拖动基础 第04章.ppt
- [工学]电气工程学科概论.ppt
- [工学]电气工程专业英语课件lecture1-2012.ppt
- [工学]电气工程课件10.pdf
- [工学]电气安全-第五讲.ppt
- [工学]电气工程基础C0201.ppt
- [工学]电气控制与PLC应用模块三.ppt
- [工学]电气控制基本控制环节13、14.ppt
- [工学]电气自动控制.ppt
- [工学]电气控制与PLC.ppt
- 考点解析-苏科版九年级物理上册《简单机械和功》专题测试试卷(含答案详解).docx
- 考点解析-苏科版九年级物理上册《简单机械和功》专题测试试题(含答案解析).docx
- 考点解析-苏科版九年级物理上册《简单机械和功》专题测评试题.docx
- 考点解析-苏科版九年级物理上册《简单机械和功》专题测评试卷(解析版).docx
- 考点解析-苏科版九年级物理上册《简单机械和功》专题测评试题(解析版).docx
- 考点解析-苏科版九年级物理上册《简单机械和功》专题测评试题(含答案解析版).docx
- 考点解析-苏科版九年级物理上册《简单机械和功》专题测试试卷(含答案详解版).docx
- 考点解析-苏科版九年级物理上册《简单机械和功》专题训练练习题(含答案详解).docx
- 考点解析-苏科版九年级物理上册《简单机械和功》专题测评试卷(含答案详解).docx
- 考点解析-苏科版九年级物理上册《简单机械和功》专题测评练习题(含答案详解).docx
最近下载
- 并网光伏电站项目工程现场电气二次施工方案.doc
- 英语新课标背景下:非纸笔测试在小学英语期末评价中的实践研究.pdf VIP
- 液体伤口敷料产品技术要求标准2023版.docx VIP
- 股市实战绝技汇总篇(精华).doc VIP
- 历年行情的十大牛股.doc VIP
- 安徽省六校联考暨安徽六校教育研究会2026届高三入学素质检测-物理试卷答案.docx VIP
- 基于Ansys CFX的风扇叶片双向流固耦合分析.docx VIP
- (高清版)DB1307∕T 334-2020 蛋鸡无抗养殖技术规范.pdf VIP
- 中小学教育班班通系统校级解决方案.doc VIP
- 涉税检举奖励制度的运行问题...于68份裁判文书的考察分析_金超.pdf VIP
文档评论(0)