◆ 무한한 가능성/& Programming

[함수호출규약] __cdecl, __stdcall, __fastcall, __thiscall

치로로 2009. 8. 19. 15:35




■ 함수 호출 규약 종류
→ __cdecl
→ __stdcall
→ __fastcall
→ __thiscall


■ __cdecl(C declaration)
□ 인자 전달 : 오른쪽 → 왼쪽
□ 스택 정리 : 호출한 측에서 인자를 스택에서 꺼냄


■ __stdcall(Standard call)
□ 인자 전달 : 오른쪽 → 왼쪽
□ 스택 정리 : 호출 당한 측에서 스택에서 인자를 꺼냄


■ __fastcall
□ 인자 전달 : 처음 두개의 DWORD 또는 그보다 작은 크기의 인자는 ECX와 EDX 레지스터로 전달, 나머지는 오른쪽 → 왼쪽
□ 스택 정리 : 호출 당한 측에서 스택에서 인자를 꺼냄


■ __thiscall
□ 인자 전달 : 오른쪽 → 왼쪽
□ 스택 정리 : 호출 당한 측에서 스택에서 인자를 꺼냄
□ 특징        : 직접적으로 함수 호출 규약으로 사용할 수 없다, ECX를 통해서 this 포인터를 전달


■ 관련 자료
http://www.jiniya.net/lecture/techbox/callconv.html


출처> http://usmemorys.tistory.com/209