控制流图
控制流图(CFG, Control flow graph)
控制流图(CFG)是用在编译器中的一个抽象数据结构。它是一个过程或程序的抽象表现,由编译器在内部维护。每个在图形中的节点代表一个基本块,例如,没有任何跳跃或跳跃目标的直线代码块;跳跃目标以一个块开始,和以一个块结束。定向边缘被用于代表在控制流中的跳跃。在那里,在大部分介绍中,两个特定的设计块:项目块,通过它控制到流图的输入,和编辑块,通过它全面控制流输出。
控制流图CFG是一有向图G = (N, E, nentry, nexit). 其中,N是节点集,程序中的每个语句都对应图中的一个节点;边集E = {< n1,n2 > | n1, n2∈ N且n1执行后,可能立即执行n2}; nentry 和nexit分别为程序的入口和出口节点。
程序控制流图的绘制:
程序语句格式化、规范化处理;
识别程序的逻辑行;
根据程序逻辑行之间的控制关系绘制CFG图;
在CFG图上作适当的标记,例如入/出口、真假分支等。