- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六单元代码优化
第六章:代码优化 第5章主要内容回顾 属性文法 中间代码的形式 四元式(也称为三地址代码) 赋值语句的翻译 布尔表达式的翻译 控制流语句的翻译 第六章 代码优化 优化技术概述 基本块与局部优化 控制流分析和循环优化 数据流分析与优化(略) 6.1 概述 代码优化 编译时刻为改进目标程序的质量而进行的各项工作 质量的改进,包括提高目标程序的时间效率和空间效率 代码优化进行的是等价变换 优化不能改变程序对给定输入的输出,也不能引起源程序原先不会出现的新错误 变换所作的努力是值得的 编译器优化源程序的额外开销应能从目标程序的运行中得到补偿 6.1 概述 代码优化的分类 依据是否与机器相关分: 与机器相关的优化 1、在目标代码生成之后进行,针对的是目标代码 2、内容:寄存器优化、多处理器优化、特殊指令优化、无用指令消除等 与机器无关的优化 1、在中间代码生成之后进行,针对的是中间代码 2、与机器无关的优化更具有普遍意义,可以适用于多种物理机器的代码生成程序 依据优化所涉及的程序范围分: 局部优化 —— 针对基本程序块 循环优化 —— 针对循环体 全局优化 —— 针对整个程序 6.1 概述 优化技术简介: 1、删除多余运算(删除公共子表达式) (3)、(6) 计算出的值相等(4*I),且从 (3)到(6)没有对I进行赋值,所以可 以将 (6) 变换为 T4:=T1。 2、代码外提 减少循环中代码总数的一个重要办法是 代码外提。这种将循环不变运算,即其结 果独立于循环次数的表达式,提到循环前 面,使之只在循环外计算一次。在这里, (4)、(7)外提。 6.1 概述 3、强度削弱 把强度大的运算换算成强度小的运算, 如乘方变乘法,乘法变加法等等。对于本 例中,由于T1 与 I 是线性关系,每次I 增1,T1增 4 ,所以可以把循环中计算T1 值的乘法运算变换成在循环前进行一次乘 法运算 ,而在循环中将其变成加法运算。 即(3) 外提,在 (12) 前增加一条语句 ( 3′ ) T1:=T1+4 6.1 概述 4、变换循环控制条件 在上面的代码中,I和T1始终保持T1=4*I 的线性关系,这样可以把将 (12) 的循环 控制条件 I=20 变换成 T1=80,这样 变换后整个程序的运行结果不变,但 若I在循环后不会被引用,则四元式(11) 可以从循环中删除。 6.1 概述 6.1 概述 6、删除无用代码 T4 和 I 未被引用,相关赋值语句可删除 6.2 基本块与局部优化 基本块 定义: 一个连续的三地址(中间)代码序列 只有一个入口语句,一个出口语句 执行时从入口语句进入,从出口语句退出 基本块的划分 寻找入口语句 1、程序的第一条语句 2、转移语句的目标语句 3、紧跟在条件转移语句后面的语句 划分基本块的算法: 1、求出所有入口语句 6.2 基本块与局部优化 2、一个入口语句对应一个基本块,构造某入口 语句对应的基本块的方法是:该基本块由该入 口语句到下一入口语句(不包括下一入口语句) ,或到一转移语句(包括该转移语句)或到一 停语句(包括该停语句)之间的代码序列组成。 3、凡未被纳入某一基本块的语句,都是程序 中控制流程无法到达的语句,可以删除。 例子:对于右图中的代码段,由规则1,语句 (1)是入口语句,由规则2,语句(3)是入口 语句,由规则3,跟随语句(12)的语句是入口 语句,这样,语句(1)和(2)构成一个基本 块B1,语句(3)-(12)构成一个基本块B2。 6.2 基本块与局部优化 基本块内可进行的优化:删除公共子表达式、删除无用代码、复写传播、合并已知量等。 参考优化技术简介,1、5、6是局部优化,即基本块优化。 基本块优化的实现 基本块的 DAG 表示 叶结点标记为变量名字或常数,表示该结点代表该变量或常数的值 内部结点标记为运算符号,代表此运算符号作用于其子结点计算出来的值 结点可附加一个或多个标识符,表示这些标识符具有该结点所代表的值 6.2 基本块与局部优化 DAG 的构造 三地址代码有如下三种形式 (1) x:=y op z (2) x:=op y (3) x:=y 函数 node(id):返回最新建立的与 id 联系的结点 DAG的构造算法:依次考察每一条三地址代码 1、若 node(y)、node(z)没有定义,分别建立标记为 y 和 z 的结点 2、对于(1),寻找是否有一个标记为 op 的结点,它的左结点为 node(y) ,右结点为 node(z) ,如果有,在此结点的附加标识符表中增加 x ,否则,建立一个这样的标记为 op 的结点,并在此结点的附加标识符表中增加 x(如果node(y)和node(z)都是标记为常数的叶结点,则执行y
您可能关注的文档
最近下载
- 2021年河南中考化学真题及答案.doc VIP
- 4.1水资源及其利用(第1课时保护水资源)课件---2024-2025学年九年级化学人教版(2024)上册.pptx VIP
- 华中科技大学大学物理2014-2015期末考试.pdf VIP
- 果树栽培学完整课件各论苹果.ppt VIP
- 连锁酒店行业2025年扩张策略与风险规避报告.docx
- 国企三项制度改革-10、任期制契约化任期业绩目标责任书(总经理).pdf VIP
- 肝衰竭诊治指南(2024年版)解读.pptx
- 住宅物业管理服务规范DB3505T 17—2024.pdf VIP
- 2024辅警面试问题及答案 .pdf VIP
- 副局长意识形态工作总结.docx VIP
文档评论(0)