维基百科有一个控制流图的定义。我还听说过有关“调用(流?)图”的术语,但找不到任何相关资源。两者之间有什么关系?
问问题
4833 次
2 回答
32
维基百科将调用图定义为程序中子程序之间调用关系的表示。在调用图中,两个节点之间的边f
和g
:
f --> g
表示 subroutinef
调用 subroutine的事实g
。调用图给出了程序的跨过程视图。
控制流图 (CFG) 为整个程序的结构,特别是子程序的结构提供了更精细的“细节”。例如,子程序的 CFGf
将明确所有由条件分支诱导的路径:
/ branch1 \
begin --> condition --> --> codeblock --> g --> end
\ branch2 /
这种 CFG 用于构建子程序的程序内视图。
于 2012-03-27T12:56:52.087 回答
8
调用图 (CG)和控制流图 (CFG)由节点和边组成。CG是过程间的,节点代表子程序(方法、函数……),而边代表两个子程序之间的调用者调用关系(例如,A->B,“A”是调用者子程序,而“B”是称为子程序)。CFG是过程内的,节点表示程序语句,包括调用的子例程和条件语句,而边表示程序的流程。当CG和CFG结合起来时,它被称为过程间控制流图(ICFG)。CFG生成比CG更耗费资源,但更详细。
于 2020-01-14T18:28:21.763 回答