2017-11-25 8 views
0

元の質問は次のとおりです。 スタティックおよびダイナミックチェーンを含むすべてのアクティベーションレコードインスタンスを含むスタックを、次のスケルトンプログラムで位置1に達すると表示します。想定Bigsubはレベル1サブプログラムの実装 - アクティブなレコードインスタンスのスタック

enter image description here

にあり、答えは次のとおりです。 enter image description here

しかし、私は静的リンクは静的な親のそれの一番下を指している必要がありますので、答えは、間違っていると思いますARI、トップではなく、ダイナミックリンクだけがトップを指すはずです。

たとえば、BとCの静的リンクは、Aの最上部ではなくAの下部を指し、Aの静的リンクはBIGSUBの下部を指します。そうではありませんか? ありがとうございます。

答えて

0

アクティベーションレコードのレイアウトは、実装によって異なります。レコードを使用するための擬似コードを見ると、その例が正しいかどうかを知ることができます。レコードのトップ/これは(あなたが次のものの中で行ったように、それは私にはですが、私は、トップを使用します)の実装に依存します。

この例では、レコードのもう一方の端( "top")を指すことは、これらのアドレスが常にSTACK[DYNAMIC_LINK_ADDRESS]+1にあるため、不要です。 V この例のルーチンは、パラメータまたはローカル変数を定義していないため、アクティベーションレコードの使用方法を想像するのが難しくなります。

各ルーチンがXYの変数を定義している場合、スタックは、正のオフセットを使用してスタック内でパラメータと変数を見つけることができるダイナミックリンクと静的リンクの両方を指す次の疑似テーブルのように見えます変数がローカルまたはローカルでない場合に同じオフセットが使用されます; は、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 
関連する問題