- 34
- 0
- 约 98页
- 2017-06-22 发布于北京
- 举报
* * e_kill[B]的计算 设流图的表达式全集为E; 初始设置:EK = 空; 顺序扫描基本块的每个四元式: 对于四元式op x y z,把表达式x op y从EK中消除; 把E中所有和z相关的四元式加入到EK中。 扫描完所有的四元式之后,EK就是所求的e_kill[B]。 * * 数据流方程 out[B]=e_gen[B]∪(in[B]-e_kill[B]) in[B]= ∩out[p] B!=B1, p是B的前驱。 in[B1]=空集 说明: 在程序开始的时候,无可用表达式。(3) 一个表达式在某个基本块的入口点可用,必须要求它在所有前驱的出口点也可用。(2) 一个表达式在某个基本块的出口点可用,或者该表达式是由它的产生的;或者该表达式在入口点可用,且没有被注销掉。(1) B p2 p1 p3 IN OUT GEN -KILL * * 方程求解算法 迭代算法 初始化:in[B1]=空; out[B1]=e_gen[B1];out[Bi]=U-e_kill[Bi](i=2) 重复执行下列算法直到out稳定: for(i=2; i=n ;i++) { in[Bi]= ∩out[p], p是Bi的前驱; out[Bi]=e_gen[Bi] ∪(in[Bi]-e_kill[Bi]); } * * 算法说明 初始化值和前面的两个算法不同。out[Bi]的初值大于实际的值。 在
原创力文档

文档评论(0)