控制流图和调用(流程?)图之间的实际差异?

Cha*_*Kut 7 static-analysis control-flow call-flow

维基百科有控制流图的定义.我还听到过引用'call(flow?)graph'的术语,但找不到任何相关的资源.两者之间有什么关系?

ftk*_*ftk 24

维基百科将调用图定义为程序中子例程之间调用关系的表示.在调用图中,两个节点之间的边fg:

      f --> g
Run Code Online (Sandbox Code Playgroud)

表示子例程f调用子例程的事实g.调用图给出了程序的过程间视图.

控制流程图(CFG)为整个程序的结构提供了更精细的"细节",特别是子程序.例如,子例程的CFG f将明确条件分支引起的所有路径:

                             / branch1 \
    begin --> condition -->             --> codeblock --> g --> end
                             \ branch2 /
Run Code Online (Sandbox Code Playgroud)

这种CFG用于构建子程序的程序内视图.

  • 来自我的+1 ..顺便说一下,我不会将维基百科上的定义用作权威. (2认同)

小智 7

调用图 (CG)控制流图 (CFG)由节点和边组成。CG是过程间的,节点代表子程序(方法,函数,...),边代表两个子程序之间调用者调用的关系(例如,A->B,“A”是调用者子程序,而“B”是称为子程序)。CFG是过程内的,节点代表程序语句,包括被调用的子程序和条件,而边代表程序的流程。当CGCFG结合在一起时,它被称为过程间控制流图(ICFG)CFG生成比CG占用资源,但更详细。