関数の型
関数には基本的に 2 つの型があります。スタック フレームが必要な関数をフレーム関数といいます。スタック フレームを必要としない関数をリーフ関数といいます。
フレーム関数は、スタック領域を割り当てたり、他の関数を呼び出したり、不揮発性レジスタを保存したり、例外処理を使用したりする関数です。フレーム関数には、関数テーブル エントリも必要です。フレーム関数には、プロローグとエピローグが必要です。フレーム関数は、動的にスタック領域を割り当てて、フレーム ポインターを使用することができます。フレーム関数を配置すると、この呼び出し標準のすべての機能を実行できます。
フレーム関数から別の関数を呼び出さない場合、スタックの整列は必要ありません (「スタック割り当て」を参照)。
リーフ関数は、関数テーブル エントリを必要としない関数です。リーフ関数は、関数を呼び出したり、領域を割り当てたり、不揮発性レジスタを保存したりすることができません。リーフ関数では、リーフ関数の実行時にスタックを整列しないままにすることができます。