6

いくつかのCPUアーキテクチャでいくつかの呼び出し規約を読んでいる間、私は次のようなものを読みました

「エピローグとプロローグ」、ある関数が別の関数から呼び出された場合。

関数プロローグまたはエピローグとは何ですか?

4

2 に答える 2

10

関数のエピローグとプロローグは、関数が呼び出されたときにコンテキストを「セットアップ」し、関数が戻ったときにクリーンアップする一連の命令です。

プロローグは通常、次のようなタスクを実行します。

  • 関数が使用する可能性のあるすべてのレジスタを保存します (プラットフォームの標準では、関数呼び出し間で保持する必要があります)。
  • 関数がローカル変数に必要とする可能性があるスタック上のストレージを割り当てます
  • スタックに渡される可能性のあるパラメーターへのポインター (またはその他のリンケージ) をセットアップします。

エピローグは通常、保存レジスタを復元し、スタック ポインターを復元するだけでよく、関数が独自に使用するために予約したメモリはすべて「解放」されます。

プロローグ/エピローグで使用される正確なメカニズムは、CPU アーキテクチャ、プラットフォーム標準、関数の引数と戻り値、および関数が使用している特定の呼び出し規約に依存します。

于 2010-07-12T19:03:04.423 に答える
2

ウィキペディアFTW:https ://en.wikipedia.org/wiki/Function_prologue

私の意見では、これはそれをかなりうまく説明しているように見えました。不明な点がありましたらお知らせください。問題を解決することができます。

于 2010-07-12T18:57:36.720 に答える