最終更新:2019-11-08 (金) 17:55:53 (1627d)  

呼び出し規約
Top / 呼び出し規約

メモ

  • x86の呼び出し規約はいくつかあるが、x64の呼び出し規約はレジスタを活用する方法のみ

DLLの関数の呼び出し規約

  • Visual C++の標準は__cdecl (プロジェクト設定→C++→詳細設定)
    呼び出し規約スタックのクリア関数の名前(extern "C"のとき)備考
    __cdecl呼ぶ側_funcCランタイムdefault calling convention for C and C++ programs
    __stdcall呼ばれた側_func@4Win32 APIused to call Win32 API functions.
    __fastcall?呼ばれた側@func@4
    thiscall?呼ばれた側メンバ関数
    __clrcall?
    __thiscall?
    __vectorcall?

extern C

  • 名前装飾を無効にする

メモ

  • stdcallとfastcallでは、関数名は_名前@X と @名前@Xのようにエンコードされる。
  • Xにはコールスタックに積まれる引数のバイト数が入る

windef.h

メモ

関連

参考