- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计语言 译原理(第三版)第10章
* 第十章 优化 优化: 如何对程序进行各种等价变换,使得从变换 后的程序出发,能生成更有效的目标代码。 注: (1)优化可在编译的各个阶段进行,但最主要的一类优化是在 目标代码生成以前,对语法分析后的中间代码进行的; (2)另一类重要的优化是生成目标代码时进行的,它在很大程 度上依赖于具体的计算机 — 本章不做讨论 10.1 概述 10.2 局部优化 10.3 循环优化(略) 10.4 数据流分析(略) 第十章 优化 §10.1 概述 一、优化的目的是为了产生更高效的代码,需遵循以下 的原则: 1.等价原则:经过优化后不应改变程序运行的结果。 2.有效原则:使优化后所产生的目标代码运行时间较短, 占用的存储空间较小。 3.合算原则:应尽可能以较低的代价取得较好的优化效果。 二、各个环节的优化 1.源代码设计 2.设计语义时 3.中间代码生成后 4.目标代码 §10.1 概述 三、常用的优化技术 1.删除公共子表达式 2.复写传播 3.删除无用代码 4.代码外提 5.强度削弱 6.删除归约变量 目录 §10.1 概述 §10.2 局部优化 一、基本块及流图 1.基本块:指程序中一顺序执行的语句序列,其中只有一个 入口和一个出口,入口就是其中的第一个语句,出 口就是其中的最后一个语句。 2.基本块的划分: (1)求出四元式程序中各个基本块的入口语句; (2)对以上求出的每一入口语句,构造其所属的基本块; (3)凡未被纳入某一基本块中的语句,都是程序中控制流 无法到达的语句,从而也是不会被执行到的语句,我们 就可以把它们从程序中删除。 举例:考察下面的三地址代码程序 (1)Read X (2)Read Y (3)R:=X mod Y (4)if R=0 goto (8) (5)X:=Y (6)Y:=R (7)goto(3) (8)write Y (9)halt B1 B2 B3 B4 B1 B2 B3 B4 §10.2 局部优化 3.流图及其生成 举例:对上例中的程序的各基本块构成的流图如下所示: (1)Real X (2)Real Y (3)R:=X mod Y (4)If R=0 goto(8) (5)X:=Y (6)Y:=R (7)goto(3) (8)Write Y (9)halt §10.2 局部优化 4.基本块内的变换: (1)合并已知量 (2)临时变量改名 (3)变换语句的位置 (4)代数变换 §10.2 局部优化 二、基本块的DAG表示及其应用 1.基本块的DAG: 一种结点带有下述标记或附加信息的DAG (1)图的叶结点以一标识符(变量名)或常数作为标记,表示该 结点代表该变量或常数的值。 (2)图的内部结点以一运算符作为标记,表示该结点代表应用 该运算符对其后继结点所代表的值进行运算的结果。 (3)图中各个结点上可能附加一个或多个标识符,表示这些变 量具有该结点所代表的值。 §10.2 局部优化 例: 对下面基本块画出DAG图并进行分析: (1)T1:=4*i (2)T2:=a[T1] (3)T3:=4*i (4)T4:=b[T3] (5)T5:=T2*T4 (6)T6:=prod+T5 (7)prod:=T6 (8)T7:=i+1 (9)i:=T7 (10)if i=20 goto (1) §10.2 局部优化 基本块的DAG如下所示: n10 n8 n9 n7 n5 n6 n4 n2 n1 n11 n13 n3 n12 n14 T6,prod + T5 prod0 * T4 (1) T2 = [] T1,T3 [] T7,i * + 20 a b 4 i0 1 §10.2 局部优化 2.构造基本块的GAD的算法 (1)前提:假设DAG各结点信息将用某种适当的数据结构来存放 (例如链表) 标识符(包括常数)-结点 NODE(A)-描述上述对应关系的函数,其值或者是一个结点的编号, 或者无定义 (2)中间代码的三种形式:A:=B A:=op B A:=B op C 或 A:=B[C]
您可能关注的文档
- 爱要勇敢表达 话剧).ppt
- 爱莲说·清荷谈映古色.ppt
- 爱的表达——细描写.ppt
- 爸爸妈妈不在身时候,即使有再多好吃的东西,我都会.ppt
- 爱车派车身润滑卫士保养套餐明和亨.ppt
- 爸爸妈妈不在身的时候,即使有再多好吃的东西,我都会.ppt
- 爸爸妈妈的手课1.ppt
- 版式设计 版面排 1优选.ppt
- 爱迪生检查急性尾炎一溜烟似的斥责委屈亮堂恍然大悟.ppt
- 猖狂肆虐的法西铁蹄.ppt
- 2024年救护车项目投资申请报告代可行性研究报告.docx
- 平方差说课课件.pptx
- 中国特发性面神经麻痹(面瘫)神经修复治疗临床指南【2023版】.pdf
- 2024年飞机用石英玻璃管项目资金申请报告代可行性研究报告.docx
- 2024年数据目录项目资金需求报告代可行性研究报告.docx
- 2024年高分子合成材料项目投资申请报告代可行性研究报告.docx
- 2024年软体家具项目投资申请报告代可行性研究报告.docx
- 2024年高端白酒项目资金筹措计划书代可行性研究报告.docx
- 2024年文教办公用品项目资金需求报告代可行性研究报告.docx
- 2024年防静电海绵项目资金筹措计划书代可行性研究报告.docx
文档评论(0)