8.3.1. 階層の構築方法

コールグラフで表現される関数の階層は、実行時にキャプチャされたコールチェーンに基づいて構築されます。 元の関数が一番左の列に配置され、それにより呼び出される関数がその右の列に配置されます。 さらに、これらの関数が呼び出す関数がその右の列に配置されるというように、すべての関数が配置されるまでこれが継続されます。 この配置方法には例外があり、関数が階層の複数レベルで呼び出された場合は、コールグラフのできるだけ左に配置されます。

これを図説すると、関数 main が関数 a を呼び出し、関数 a が関数 b を呼び出す場合には、Figure 8.2 に示されたとおりになります。

Figure 8.2. シンプルな呼び出し階層

シンプルな呼び出し階層

main 関数が関数 a に加えて、関数 b も呼び出す場合は、b が main の近くの階層の上位に配置されます。 これは Figure 8.3 に示しています。

Figure 8.3. 複数の関数の呼び出し階層

複数の関数の呼び出し階層

コールグラフはシンプルな呼び出し階層を表しますが、実世界のアルゴリズムでは、Figure 8.2 およびFigure 8.3 に示された階層よりもはるかに複雑な階層が記述されます。 コールグラフでは、呼び出し矢印をクモの巣のようにめぐらせてこれらすべての接続を視覚的に表現する代わりに、シンプルな方法を使用して呼び出しラインを引くかどうかを決めています。

Copyright © 2007, 2008 ARM Limited. All rights reserved.ARM DUI 0414CJ
Non-Confidential