------------------------ CDECL calling convention 32 BIT ------------------------ void test_CDECL( int a, int b, int c, int d ); Four parameters to be pushed in right-to-left order push 4 ; param d :esp -= 4 push 3 ; param c :esp -= 4 push 2 ; param b :esp -= 4 push 1 ; param a :esp -= 4 call test_CDECL add esp, 16 :esp += 16 ------- stdcall 32 BIT -------- Parameters are pushed the same as CDECL, however the called function is responsible for clearing the stack. ie. ret 16; : esp += 16 -------- fastcall -------- first two parameters (right to left) are put in ECX, and EDX - in that order. Rest of parameters are pushed right-to-left ret 8; : esp += 8