第7章代码优化.ppt

7.3 基本块的DAG表示 DAG(Directed Acyclic Graph)是一种有向图,常常用来对基本块进行优化。一个基本块的DAG是一种其结点带有下述标记或附加信息的DAG: (1) 图的叶结点(无后继的结点)以一标识符(变量名)或常数作为标记,表示该结点代表该变量或常数的值。如果叶结点用来表示一变量A的地址,则用addr(A)作为该结点的标记。通常把叶结点上作为标记的标识符加上下标0,以表示它是该变量的初值。 (2) 图的内部结点(有后继的结点)以一运算符作为标记,表示该结点代表应用该运算符对其直接后继结点所代表的值进行运算的结果。 (3) 图中各个结点上可能附加一个或多个标识符,表示这些变量具有该结点所代表的值。 一个基本块由一个四元式序列组成,且每一个四元式都可以用相应的DAG结点表示。图7–1给出了不同四元式和与其对应的DAG结点形式。图中,各结点圆圈中的ni是构造DAG过程中各结点的编号,而各结点下面的符号(运算符、标识符或常数)是各结点的标记,各结点右边的标识符是结点上的附加标识符。除了对应转移语句的结点右边可附加一语句位置来指示转移目标外,其余各类结点的右边只允许附加标识符。除对应于数组元素赋值的结点(标记为[ ]=)有三个后继外,其余结点最多只有两个后继。 利用DAG进行基本

文档评论(0)

1亿VIP精品文档

相关文档