前回は、関数[1]が呼ばれた際に、関数内での局所的な情報をどのように管理するかについて説明しました。 今回は、関数呼び出しにおける連携方法について説明しようと思います。 引数と戻り値 引数 関数の呼び出し元は、さまざまな形式で引数を指定します。たとえば、 自身の局所変数の値 自身に指定された引数 他の関数の呼び出し結果 上記の値から導出された値(例: 四則演算/構造体参照等) 一方で(一般的な)言語仕様上から見て、呼び出された側にとっての引数は、関数終了まで領域が保持されている=終了後は必要ない、という点では局所変数と実質的に差異がありません。 そのため、Intel x86アーキテクチャで関数呼び出しを実現する場合、呼び出し元は引数をスタック上に格納します。 リスト1 呼び出し元での引数格納 movl $1, 0(%esp) movl $15, 4(%esp) 呼び出し先の関数は、スタック