0

呼び出し規約が_cdeclか_stdcallか、それともそうでないかを示すツールはありますか?

4

1 に答える 1

1

呼び出し規約は関数ごとであり、PEファイルではありません。

ライブラリ関数。少なくともMSが提供するものはすべて_stdcallです。他のすべては他の呼び出し規約に分散されており、それらのほとんどは_cdeclです。

あなたはここでもっと読むことができます。

短いバージョン:

  • cdecl関数はスタックから引数をクリアせず、可変サイズの引数を許可します。良い例はprintf()、異なる数の引数を使用できることです。
  • stdcall関数は、スタック自体から引数をクリアします。したがって、可変サイズの引数は使用できません。

編集:例を追加

リンクcdeclからの例:

push c
push b
push a
call function_name
add esp, 12 ;Stack clearing, 3 arguments take 12 bytes of space (on 32bit)

したがって、function_name戻り値の後、呼び出し元はスタックから引数をクリアします。

于 2010-09-19T21:06:15.223 に答える