スタックフレームの概念を簡単に説明してください 質問する

スタックフレームの概念を簡単に説明してください 質問する

プログラミング言語設計におけるコール スタックの考え方は理解できたようです。しかし、スタック フレームとは何かについての適切な説明を見つけることができません (おそらく、私が十分に検索していないだけでしょう) 。

それで、誰かに簡単に説明してもらいたいのです。

ベストアンサー1

スタック フレームは、スタックにプッシュされるデータのフレームです。呼び出しスタックの場合、スタック フレームは関数呼び出しとその引数データを表します。

私の記憶が正しければ、関数の戻りアドレスが最初にスタックにプッシュされ、次に引数とローカル変数のスペースがプッシュされます。これらが一緒になって「フレーム」を形成しますが、これはアーキテクチャに依存する可能性があります。プロセッサは各フレームに含まれるバイト数を認識しており、フレームがスタックにプッシュされたりスタックからポップされたりするときにそれに応じてスタック ポインターを移動します。

編集:

上位レベルのコール スタックとプロセッサのコール スタックには大きな違いがあります。

プロセッサのコール スタックについて話すとき、アセンブリまたはマシン コードでバイト/ワード レベルでアドレスと値を操作することについて話していることになります。高レベル言語について話すときに「コール スタック」がありますが、これはランタイム環境によって管理されるデバッグ/ランタイム ツールであり、プログラムで何がうまくいかなかったかを (高レベルで) 記録できます。このレベルでは、行番号やメソッド名、クラス名などがわかっていることがよくあります。プロセッサがコードを取得するときには、これらの概念はまったくありません。

おすすめ記事