スタックフレーム
読み:スタックフレーム
外語:stack frame
関数呼び出しの際、スタック上に積まれるデータのまとまり。
概要
Cで関数を呼び出す場合、スタックにはまず関数への引数が積まれる(レジスター渡し以外のもの)。
次に、リターンアドレスが積まれる。
必要なら次に、元のスタックフレームの頭を表わすベースポインター(BP)を積む。
この上に、ローカル変数が積まれる。
特徴
例えばARMアーキテクチャの場合で、スタックフレーム内に4ワードの作業領域を作る場合、次のようになる。
レジスターは0から7までを保存する場合の例。
STMFD SP!,{R0-R7,LR}
SUB SP,SP,#4*4
.......
LDR R1,[SP,#0] ; 1番目のワードを参照
LDR R2,[SP,#4] ; 2番目のワードを参照
LDR R3,[SP,#8] ; 3番目のワードを参照
LDR R4,[SP,#16] ; 4番目のワードを参照
.........
ADD SP,SP,#4*4
LDMFD SP!,{R0-R7,PC}
再検索