程序设计语言编译原理第三版第10章.ppt
《程序设计语言编译原理第三版第10章.ppt》由会员分享,可在线阅读,更多相关《程序设计语言编译原理第三版第10章.ppt(22页珍藏版)》请在三一办公上搜索。
1、第十章优化,优化:如何对程序进行各种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。,注:(1)优化可在编译的各个阶段进行,但最主要的一类优化是在 目标代码生成以前,对语法分析后的中间代码进行的;(2)另一类重要的优化是生成目标代码时进行的,它在很大程 度上依赖于具体的计算机 本章不做讨论,10.1 概述10.2 局部优化10.3 循环优化(略)10.4 数据流分析(略),第十章优化,10.1 概述,一、优化的目的是为了产生更高效的代码,需遵循以下 的原则:,1.等价原则:经过优化后不应改变程序运行的结果。2.有效原则:使优化后所产生的目标代码运行时间较短,占用的存储空间较小。3.合
2、算原则:应尽可能以较低的代价取得较好的优化效果。,二、各个环节的优化,1.源代码设计2.设计语义时3.中间代码生成后4.目标代码,10.1 概述,三、常用的优化技术,1.删除公共子表达式2.复写传播3.删除无用代码4.代码外提5.强度削弱6.删除归约变量,10.1 概述,10.2 局部优化,一、基本块及流图,1.基本块:指程序中一顺序执行的语句序列,其中只有一个 入口和一个出口,入口就是其中的第一个语句,出 口就是其中的最后一个语句。,2.基本块的划分:(1)求出四元式程序中各个基本块的入口语句;(2)对以上求出的每一入口语句,构造其所属的基本块;(3)凡未被纳入某一基本块中的语句,都是程序中
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,10.2 局部优化,3.流图及其生成,举例:对上例中的程序的各基本块构成的流图如下所示:,10.2 局部优化,4.基本块内的变换:(1)合并已知量(2)临时变量改名(3)变换语句的位置(4)代数变换,10.2 局部优化,二、基本块的DAG表示及其应用,1.基本块的DAG:一种结点带有下述标记或附加信息
4、的DAG(1)图的叶结点以一标识符(变量名)或常数作为标记,表示该 结点代表该变量或常数的值。(2)图的内部结点以一运算符作为标记,表示该结点代表应用 该运算符对其后继结点所代表的值进行运算的结果。(3)图中各个结点上可能附加一个或多个标识符,表示这些变 量具有该结点所代表的值。,10.2 局部优化,例:对下面基本块画出DAG图并进行分析:(1)T1:=4*i(2)T2:=aT1(3)T3:=4*i(4)T4:=bT3(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 局部优化,基本块的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计语言 编译 原理 第三 10
链接地址:https://www.31ppt.com/p-6482028.html