呼び出し規約が_cdeclか_stdcallか、それともそうでないかを示すツールはありますか?
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 に答える