Next: Up: Previous:

スタックフレームの配置

figure105

         図3.1: C手続きの典型的なスタック配置. 
                パラメタはcallerのフレームの中にある. 
                局所変数,テンポラリ変数,callee-save register,
                callerへのリンク(すなわちリターンアドレスとcallerのFP)は
                現在の手続きのフレームの中にある.

図3.1はC手続きの典型的なスタックフレームの配置を示している. その図はスタックが下に伸びるという仮定のもとに, 手続き f のスタックフレームと, その親 P を図解している. スタックの最も低いアドレスと, 最も高いアドレスは それぞれスタックポインタ(SP)とフレームポインタ(FP)に よって指されている. スタックフレーム f は以下のものを保持する.

レジスタにアロケートされていない入力パラメタはcallerの フレームに格納されるので, callerは呼ばれる手続きの フレームの配置について知る必要はない. 入力パラメタのcalleeのフレームポインタからのオフセットは すべての手続きを通じて定数である. よってcalleeはcallerを 知る必要がない.

手続きがリターンするときSPとFPを回復するのはcalleeの責任である.



Mitsubishi Research Institute,Inc.
Mon Feb 24 19:27:36 JST 1997