ホーム > プログラミングメモ > 呼び出し規約
 

呼び出し規約

Visual C/C++での呼び出し規約(calling convention)をまとめておきます。

__cdecl, __fastcall, __stdcall

【__cdecl】
引数の渡し方:スタック経由のみ スタックへの積み方:Right to Left スタックに積まれた引数の除去:関数を呼び出した側で行う。


【__fastcall】
引数の渡し方:(左側から)最初の2つはECX, EDX経由、残りはスタック経由 スタックへの積み方:Right to Left スタックに積まれた引数の除去:関数を呼び出された側で行う。


【__stdcall】
引数の渡し方:スタック経由のみ スタックへの積み方:Right to Left スタックに積まれた引数の除去:関数を呼び出された側で行う。 注:WIN32 APIを呼び出すときに使う呼び出し規約。


その他

【その他の呼び出し規約】
■あまり使わなさそうなもの __clrcall __thiscall naked(__naked) (関数の入口・出口での引数処理コードが生成されなくなる。VxDで使うらしい。) ■かつて使われていたもの __pascal __fortran __syscall


執筆日:2004年10月11日(月)

Copyright(C) 毛流麦花
 
64ビットCPU(AMD64+EM64T)でアセンブラ