- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
补课 网工11 17周周1,5、6节, 教室:明N109 补课 网工10 17周周1,3、4节, 教室:明N109 回边: 4?3 3 dom 4 7 ?4 4 dom 7 10 ?7 7 dom 10 8 ?3 3 dom 8 9 ?1 1 dom 9 寻找自然循环之例 与回边4?3相应的自然循环是{3,4,5,6,7,8,10} 与回边7?4相应的自然循环是{4,5,6,7,8,10} 流图中寻找自然循环的思路: 找出满足条件M dom N 的回边N?M后,找出不经过结点M而能达到N的一切结点,也即N的一切前驱结点,连同M与N,便构成回边N?M的自然循环。因此找出一切回边,然后找出相应的自然循环。 可归约流图:删去其中的回边后构成无环路有向图的流图。 回边7?4对应的循环:{4,5,6,7} M与N之间的所有结点 2. 数据流分析 数据流分析就是分析程序中所有变量的定值与引用之间的关系。数据流分析进行数据流信息的收集,这些信息包括到达-定值、活跃变量与可用表达式等反映程序中变量值的获得和使用情况的数据流信息。 注意:数据流分析是在流图基础上进行的。 若干概念: 点 入口点 出口点 定值:对变量x的定值是一个四元式,该四元式使x 获得值。该四元式的位置d 称为 x 的定值点,通常就称该定值为d。定值方式可以是输入、赋值与参数传递等。 引用点:引用x的四元式位置 到达-定值:假定变量x有定值d,如果存在一个路径,从紧随d的点到达某点p,并且在此路径上该定值未被“注销”,则称变量x的定值d 达到点p。 若干概念: 循环优化,需找到循环不变表达式。若表达式中的一切变量在循环中其值不变,即在循环内无定值点,则是循环不变量。 若能判断循环内变量x在循环外定值,就能判定其为循环不变量。为此引入ud链概念。 引用-定值链:设变量x有一引用点u,变量x的能达到点u的一切定值点的集合称为变量x在引用点u处的引用-定值链,或称ud链。 引进3类数据流方程 ? 到达-定值数据流方程: IN[B]= ∪ OUT[p] p∈P[B] OUT[B]=GEN[B]∪(IN[B]-KILL[B]) ? 活跃变量数据流方程: L_IN[B]= L_USE[B]∪(L_OUT[B]-L_DEF[B]) L_OUT[B]= ∪ L_IN[s] s∈S[B] ? 可用表达式数据流方程: E_OUT[B]=(E_IN[B]-E_KILL[B])∪E_GEN[B] E_IN[B]= ∩ E_OUT[p] B≠B1 p∈P[B] E_IN[B1 ]= ? B1是首基本块 (1) 到达-定值数据流方程 ? 引进目的:寻找循环的不变表达式。 ? 引用 - 定值链: 变量的能达到某引用点的一切定值点的集合。 ? 到达-定值数据流方程组如下: IN[B]= ∪ OUT[p] p∈P[B] OUT[B]=GEN[B]∪(IN[B]-KILL[B]) 其中 IN[B]:基本块B入口点处各变量的定值点集合 OUT[B]:各变量的能到达基本块B出口点的所有定值点的集合。 KILL[B]:各变量在基本块B中重新定值,因而在基本块B内被注销的定值点的集合。 GEN[B]:各变量在基本块B内定值并能到达B的出口点处的所有定值点的集合。 P[B]: 基本块B的前驱基本块集合。 (2) 活跃变量数据流方程 ? 引进目的:删除无用赋值。 ? 活跃变量分析: 判断在基本块的出口点之后变量是否还被引用。 ? 活跃变量:在流图上某点p开始的路径上引用变量x的值,则变量x在点p是活跃的。 ? 活跃变量数据流方程如下: L_IN[B]=L_USE[B]∪(L_OUT[B]-L_DEF[B]) L_OUT[B]= ∪ L_IN[s] s∈S[B] 其中 L_IN[B
文档评论(0)