川师编译原理课件11.ppt
《川师编译原理课件11.ppt》由会员分享,可在线阅读,更多相关《川师编译原理课件11.ppt(43页珍藏版)》请在三一办公上搜索。
1、第十一 章 代码优化,教学目的:让学生了解几种常见的代码优化技术,掌握局部优化、循环优化、数据流分析方法。教学重点:代码优化技术、基本块的DAG及应用。课时分配:4学时。教学过程:,11.1 优化技术简介,一、代码优化分类,编译前端,中间代码优化,目标代码,中间代码,目标代码优化,1、按阶段分类 中间代码优化、目标代码优化。2、按程序范围分类 局部(基本块)优化、循环优化、全局优化。二、代码优化原则 等价原则、高效原则。,三、代码优化技术 例:有如下源程序段,求其四元式形式的中间代码,并优化之(设A为实型 数组,每个元素占四个字节)。P:=0;for i:=1 to 20 do P:=P+Ai
2、*Bi;,1、数组的存储空间,设数组中每个元素占t个存储空间,则,数组首地址Addr(A),Ai的地址为:Addr(A)+(i-1)*t=Addr(A)-t+i*t令为T=Addr(A)-t,则Ai的地址为:T+i*t,(1)P:=0(2)i:=1,(3)T1:=4*i(4)T2:=addr(A)-4(5)T3:=T2T1(=)(6)T4:=4*i(7)T5:=addr(B)-4(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11)i:=i+1(12)IF i=20 GOTO(3),2、程序段对应的中间代码为如下四元式序列,B2:,B1:,每个元素占四个字节,故 t=4,
3、1)删除公共子表达式(4*i)和代码外提(4)(7),(3)T1:=4*i(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11)i:=i+1(12)IF i=20 GOTO(3),(1)P:=0(2)i:=1(4)T2:=addr(A)-4(7)T5:=addr(A)-4,B1:,B2:,2)强度削弱(T1的乘法变为加法),(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11)i:=i+1(3)T1:=T1+4(12)IF i=20 GOTO(5),(1)P:=0(2)i
4、:=1(4)T2:=addr(A)-4(7)T5:=addr(A)-4(3)T1:=4*i,B1:,B2:,3)变换循环控制条件(T1=80)、合并已知量(T1:=4)和复写传播(T6:=T5T1),(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T1(9)T7:=T3*T6(10)P:=P+T7(11)i:=i+1(3)T1:=T1+4(12)IF T1=80 GOTO(5),(1)P:=0(2)i:=1(4)T2:=addr(A)-4(7)T5:=addr(A)-4(3)T1:=4,B1:,B2:,4)删除无用赋值(2)、(6)、(11),(5)T3:=T2T1(8)T6:=T5
5、T1(9)T7:=T3*T6(10)P:=P+T7(3)T1:=T1+4(12)IF T1=80 GOTO(5),(1)P:=0(4)T2:=addr(A)-4(7)T5:=addr(A)-4(3)T1:=4,B1:,B2:,11.2 局部优化,一、局部优化的概念 1、基本块的定义:一个基本块是指程序中一顺序执行的语句序列,其中只有一个入口和一个出口。入口是程序第一个语句或转移语句的目标语句,或转移语句的后继第一个语句。出口是程序最后一个语句或转移语句。2、对中间代码求基本块后,凡是没被纳入某个基本块的语句,则是控制流程无法到达的、也不会被执行的语句,可删去。3、在基本块范围内的优化称为局部优
6、化。,二、基本块的变换1、提高运算效率的代数变换;2、四种保结构变换)删除公共子表达式;)删除无用代码;)重新命名临时变量:引入新的临时变量不影响基本块的运算结果;4)变换语句次序:当两个语句相互没有引用关系时,变换语句次序也不影响基本块的运算结果。例如:1)t1:=a+b;2)t2:=c+d;3)t1:=t2+b;其中,1)和2)可交换次序。,三、基本块的DAG表示1、DAG图即有向无环图例:,n1,n2,n2,n2,2、附加信息的DAG图1)以四元式为结点构造中间代码 的DAG,其中,ni表示结点编号,结点下符号为结点标记,结点右边符号为附加标识符。2)基本块中各种四元式及对应DAG图的结
7、点形式:(0)A:=B(:=,B,_,A),n1,A,B,(1)A:=op B(op,B,_,A)(2)A:=B op C(:=,B,C,A),n1,n2,A,B,op,n1,n3,A,B,op,n2,C,(3)A:=BC(=,BC,_,A)或(=,B,C,A)(4)if B rop C goto(s)(jrop,B,C,(s),n1,n3,A,B,=,n2,C,n1,n3,(s),B,rop,n2,C,(5)DC:=B(=,B,_,DC)(6)goto(s)(j,_,_,(s),n1,n4,(s),D,=,n3,B,n2,C,n1,(s),3)按基本块后继结点数,可将四元式分为四类:0型,1
8、型,2型,3型4)对由0、1、2型四元式构成的基本块,其DAG构造算法描述如教材P242所示。,4)DAG的应用例子:构造右边所示基本块B1的的DAG。,B1:(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,n1,3.14,T0,n2,6.28,T1,n3,R,n4,r,n5,T2,+,n6,A,*,B,T3,T4,T5,n7,T6,-,n8,B,*,根据DAG结点原来的构造顺序重写四元式如下:,B1:(1)T0:=3.14(2)T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课件 11
链接地址:https://www.31ppt.com/p-5947620.html