【发布时间】:2015-07-08 23:11:23
【问题描述】:
我想到了control flow graph;它涉及的节点是基本块(总是发生的操作序列),由代表跳跃的边连接。
但是你如何表示一个子程序调用呢?
如果我有两个这样的功能:
int tweedledee(void)
{
int x = 16;
return x + do_something();
}
int tweedledum(int n)
{
if (n < 0)
return n;
else
return n + do_something();
}
两个函数都调用do_something(),那么我需要一种方法来允许从tweedledee 中的块跳转到do_something,然后再跳转回tweedledee,并从@987654327 中的块跳转@ 到 do_something 然后返回到 tweedledum,但从来没有从 tweedledee 到 do_something 再到 tweedledum 的跳转。 (或tweedledum → do_something → tweedledee)所以看起来一个普通的有向图不足以定义这些关系......也许我错过了一些东西。
【问题讨论】:
标签: static-analysis control-flow-graph