スタック・レイアウト
スタック・レイアウトは、数値的に上位のストレージ・アドレスから数値的に下位のアドレスに拡張されます。
スタックのアドレッシングには、スタック・ポインター (SP) と呼ばれる 1 つのレジスターのみが使用され、 GPR1 は専用のスタック・ポインター・レジスターです。 これは、数値的に高いストレージ・アドレスから、数値的に低いアドレスに増加します。
ランタイム・スタックの図は、 送信者 関数が キャッチャー 関数を呼び出したときに何が起こるか、および キャッチャー 関数がそれ自体のスタック・フレームをどのように必要とするかを示しています。 関数が呼び出しを行わず、それ自体のローカル・ストレージを必要としない場合、スタック・フレームは不要であり、SP は変更されません。
注:
- 混乱を減らすために、 送信者 関数 (呼び出し元) から渡されるデータは引数として参照され、 キャッチャー 関数 (呼び出し先) が受け取るデータと同じデータはパラメーターとして参照されます。 送信者 の出力引数域は、 キャッチャーの入力パラメーター域と同じになります。
- スタック・ポインター内のアドレス値は、4 分位に位置合わせされている必要があります。 (アドレス値は 16 の倍数でなければなりません。)