制御フロー グラフのアイデアが得られました。これには、ジャンプを表すエッジで接続された基本ブロック (常に発生する操作のシーケンス) であるノードが含まれます。
しかし、サブルーチン呼び出しをどのように表現するのでしょうか?
次のような 2 つの関数がある場合:
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
tweedledum
do_something
tweedledum
tweedledee
do_something
tweedledum
tweedledum
do_something
tweedledee