アクティベーションレコードのレイアウトは、実装によって異なります。レコードを使用するための擬似コードを見ると、その例が正しいかどうかを知ることができます。レコードのトップ/下これは(あなたが次のものの中で行ったように、それは私には下ですが、私は、トップを使用します)の実装に依存します。
この例では、レコードのもう一方の端( "top")を指すことは、これらのアドレスが常にSTACK[DYNAMIC_LINK_ADDRESS]+1
にあるため、不要です。 V この例のルーチンは、パラメータまたはローカル変数を定義していないため、アクティベーションレコードの使用方法を想像するのが難しくなります。
各ルーチンがX
とY
の変数を定義している場合、スタックは、正のオフセットを使用してスタック内でパラメータと変数を見つけることができるダイナミックリンクと静的リンクの両方を指す次の疑似テーブルのように見えます変数がローカルまたはローカルでない場合に同じオフセットが使用されます; は、A)のアクティベーションレコードの+02
にあります。
N-17: DL -> 12
N-16: SL -> 07
N-15: B.X
N-14: B.Y
N-13: RET C
N-12: DL -> 07
N-11: SL -> 07
N-10: C.X
N-09: C.Y
N-08: RET A
N-07: DL -> 02
N-06: SL -> 02
N-05: A.X
N-04: A.Y
N-03: RET BITSUB
N-02: BIGSUB.X
N-01: BIGSUB.Y