第七章代码优化.ppt

  1. 1、本文档共77页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章代码优化.ppt

3、优化工作: 数据流分析(data-flow analysis) 控制流分析(control-flow analysis) 变换(transformations) 4 、优化技术简介 1). 删除多余运算 2 ). 循环不变代码外提 3 ). 强度削弱 4 ). 变换循环控制条件 5 ). 合并已知量与复写传播 6 ). 删除无用赋值 P:=0 for I:=1 to 20 do P:=P+A[I]*B[I] (1)P:=0 (2)I:=1 (3)T1:=4*I (4)T2:=addr(A)-4 (5)T3:=T2[T1] (6)T4:=4*I (7)T5:=addr(B)-4 (8)T6:=T5[T4] (9)T7:=T3*T6 (10)P:=P+T7 (11)I:=I+1 (12)if I=20 goto(3) (1)P:=0 (2)I:=1 (3)T1:=4*I (5)T3:=T2[T1] (8)T6:=T5[T4] (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(B)-4 (3)T1:=4*I (5)T3:=T2[T1] (6)T4:=T1 (8)T6:=T5[T4] (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(B)-4 (5)T3:=T2[T1] (6)T4:=T1 (8)T6:=T5[T4] (9)T7:=T3*T6 (10)P:=P+T7 (11)I:=I+1 (12)if I=20 goto(5) (1) read (C) (2) A:= 0 (3) B:= 1 (4) L1: A:=A + B (5) if B= C goto L2 (6) B:=B+1 (7) goto L1 (8) L2: write (A) (9) halt 7.2.1 基本块的DAG表示及其应用 优化基本块的一种有效工具是无回路有向图(Directed Acyclic Graph,简记为DAG). 基本块的DAG:是在结点上带有标记的DAG. 叶结点 独特的标识符(名字,常数)标记 内部结点 运算符号标记 各个结点 附加标识符标记 利用DAG进行基本块优化基本思想: 描述基本块的DAG是对其各结点按如下方式进行标记的一个无回路有向图: DAG中每个叶结点,用一变量或常数标记,表示该点代表此变量(常数)之值。若代表变量A的左值,用addr(A)标记。在表示变量的初值时,变量加下标0用于区分变量的当前值; DAG的内部结点都用一运算符标记,代表其直接后继所代表之值进行该运算后结果; DAG的各点上,可附加若干符号名,以表示这些符号都持有相应结点所代表的值。 7.4 数据流分析 1.概述 2.到达一定值数据流方程 3.u d 链计算及其应用. 4.活跃变量数据流方程 ?数据流分析 如分析程序中所有变量的定值和引用之间的关系. ? 程序中某一“点”,指某个语句(四元式)的位置(地址或编号) ? 变量A的定值点 ? 变量A在某点d的定值到达另一点u(或称变量A的定值点到达另一点u)是指流图中从d有一通路到达u且该通路上没有A的其它定值. 结构化程序的数据流分析 结构化程序的控制流结构性质 S ? id :=E | S;S | if E then S else S | do S while E E ? id + id | id 定值到达语句的开始和结束 结构化程序的到达定值数据流分析语法制导定义 IN[S]:进入S开始的定值 OUT[S]:到达S结尾的定值 GEN[B]:S中的定值. KILL[S]:被S注销的定值 深度为主查找: 对于给定的流图,沿着从首结点开始的通路访问图中各个结点的过程中,始终沿着某通路尽量前进,直到访问不到新结点时,才再回退 到其前驱结点。然后再由前驱结点沿另一通路尽量前进,直到又访问不到新结点时,才再回退到其前驱结点。 深度为主次序: 按深度为主查找中所经过的结点序列的逆序,依次给各结点

文档评论(0)

docinpfd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档