- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9单元中间代码优化
第一章:编译概述 编 译 原 理 杭州电子科技大学 第 9 章 中间代码的优化 代码优化概述 基本块与局部优化 控制流分析 数据流分析与优化 9.1 代码优化概述 代码优化 9.1 代码优化概述 9.1 代码优化概述 代码优化的分类 9.1 代码优化概述 9.1 代码优化概述 9.1 代码优化概述 代码优化程序的结构: 9.1 代码优化概述 9.1 代码优化概述 代码优化示例 9.1 代码优化概述 1、删除多余运算(删除公共子表达式) 9.1 代码优化概述 2、代码外提 9.1 代码优化概述 3、强度削弱 9.1 代码优化概述 4、变换循环控制条件 9.1 代码优化概述 5、合并已知量与复写传播 9.1 代码优化概述 6、删除无用代码 9.1 代码优化概述 优化后代码 9.2 基本块与局部优化 基本块 9.2 基本块与局部优化 9.2 基本块与局部优化 例子: 9.2 基本块与局部优化 9.2 基本块与局部优化 9.2 基本块与局部优化 9.2 基本块与局部优化 9.2 基本块与局部优化 9.2 基本块与局部优化 9.2 基本块与局部优化 9.2 基本块与局部优化 例子: (1)T0 := 3.14 (2)T1 := 2 * T0 (3)T2 := R + r (4)A := T1 * T2 (5)B := A (6)T3 := 2 * T0 (7)T4 := R + r (8)T5 := T3 * T4 (9)T6 := R - r (10)B := T5 * T6 9.2 基本块与局部优化 (1)T0 := 3.14 (2)T1 := 2 * T0 (3)T2 := R + r (4)A := T1 * T2 (5)B := A (6)T3 := 2 * T0 (7)T4 := R + r (8)T5 := T3 * T4 (9)T6 := R - r (10)B := T5 * T6 9.2 基本块与局部优化 9.2 基本块与局部优化 9.2 基本块与局部优化 9.2 基本块与局部优化 9.3 控制流分析 程序流图(P249) 9.3 控制流分析 9.3 控制流分析 9.3 控制流分析 9.3 控制流分析 循环 9.3 控制流分析 例子: 9.3 控制流分析 1、—— 所有结点的必经结点 2、—— 自身的必经结点 3、—— 除1、2、外所有结点的必经结点 4、—— 除1、2、3、外所有结点的必经结点 5、—— 自身的必经结点 6、—— 自身的必经结点 7、—— 7、8、9、10的必经结点 8、—— 8、9、10的必经结点 9、—— 自身的必经结点 10、——自身的必经结点 9.3 控制流分析 例子: 回边有: 7→4 10→7 4→3 8→3 9→1 9.3 控制流分析 例子: 回边有: 1. 7→4( 4、5、6、7、8、10 ) 2. 10→7( 7、8、10 ) 3. 4→3( 3、4、5、6、7、8、10 ) 4. 8→3( 3、4、5、6、7、8、10 ) 5. 9→1(全部) 9.3 控制流分析 循环优化 9.4 数据流分析与优化 没有程序的数据流等相关信息,无法进行循环优化和全局优化,因此要进行整个程序的数据流分析 利用 DAG 进行优化 按照构造 DAG 的顺序重写代码可得优化代码 例子: (1)T0 := 3.14 (2)T1 := 6.28 (3)T3 := 6.28 (4)T2 := R + r (5)T4 := T2 (6)A := 6.28 * T2 (7)T5 := A (8)T6 := R - r (9)B := A * T6 3.14 6.28 R0 * + * r0 - T0 T1 , T3 T6 T2 , T4 A , (B),T5 B DAG: 合并了已知量 删除了无用赋值 公共子表达式只计算了一次 如果 T0 - T6 在基本块后面不被引用,则代码可进一步优化为: (1)S1 := R + r (2)A := 6.28 * S1 (3)S2 := R - r (4)B := A * S2 DAG 提供的其他信息: 在基本块外被定值并在基本块内被引用的所有标识符(叶子上的标识符) 在基本块内被定值并可在基本块外被引用的标识符(结点上的附加标识符) 一个程序可以用一个控制流程图(流图)来表示 一个程序的流图是个三元组 G =(N,E,n0) N 是流图的结点集合,流图中的结点是程序基本块 n0 是 N 中的元素,称为首结点,该结点包含程序的第一条语句,n0 到流图中任何结点都有通路 E 是有向边集合,有向边代表程序的流程 有向边如下构造: 当以下条
您可能关注的文档
最近下载
- 21CS03-3:一体化预制泵站选用与安装(三).docx VIP
- 2025届高考物理考点一轮复习:功能关系 能量守恒定律(解析版).pdf VIP
- 二年级上册语文教案 第七单元.docx VIP
- 快递业务操作规范与流程.pdf VIP
- 用在线乳化技术实现柴油机低温燃烧的研究 the experimental study of online emulsification technology in realizing diesel low- temperature combustion.pdf VIP
- 课桌椅项目实施方案-(范文模板).docx VIP
- 快递服务行业业务查询处理规范.doc VIP
- PDCA循环工作方法培训.pptx VIP
- 快递业务操作规范及投诉处理.doc VIP
- 充电桩采购安装项目售后服务承诺.docx VIP
文档评论(0)