1. ホーム
  2. callstack

[解決済み】スタックフレームの概念をわかりやすく説明する

2022-04-04 15:18:26

質問

というのがわかるような気がします。 コールスタック プログラミング言語設計における しかし、私は、(おそらく、私が十分に検索していないだけなのでしょうが)どのような スタックフレーム とは何ですか?

そこで、どなたかに一言で説明していただきたいのですが。

どのように解決するのですか?

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

私の記憶が正しければ、関数のリターンアドレスが最初にスタックにプッシュされ、次に引数とローカル変数のスペースがプッシュされるはずです。これはアーキテクチャに依存すると思われますが、これらを合わせてフレームと呼びます。プロセッサは各フレームのバイト数を把握しており、フレームがスタックからプッシュ、ポップされると、それに応じてスタックポインタを移動させます。

EDIT

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

プロセッサのコールスタックといえば、アドレスや値を扱うのは バイト/ワードレベル アセンブリコードまたはマシンコードの 高級言語について語るとき、quot;コールスタック"はありますが、それはランタイム環境が管理するデバッグ/ランタイムツールで、プログラムで何がうまくいかなかったかを(高いレベルで)記録することができるようにするものです。このレベルでは、行番号やメソッド名、クラス名といったものがよく知られている。プロセッサがコードを取得する時点では、これらの概念は全くありません。