[C++] Calling Convention
저장소/VC++[호출규약 : __cdecl] <---ANSI C 함수호출규약
Element | Implementation |
---|---|
Argument-passing order 인자 전달 순서 |
Right to left 오른쪽에서 왼쪽 순서로 스택으로 전달 |
Stack-maintenance responsibility 스택 정리 |
Calling function pops the arguments from the stack 호출한 측에서 인자를 스택에서 꺼냄 |
Name-decoration convention 명명 규칙 |
Underscore character (_) is prefixed to names 이름 앞에 언더스코어(_)가 붙음 |
Case-translation convention 대소문자 변환 |
No case translation performed 대소문자 변환 없음 |
[호출규약 : __stdcall] <---C++ 함수호출규약
Element | Implementation |
---|---|
Argument-passing order 인자 전달 순서 |
Right to left. 오른쪽에서 왼쪽 순서로 스택으로 전달 |
Stack-maintenance responsibility 스택 정리 |
Called function pops its own arguments from the stack. 불려진 함수가 스택에서 인자를 꺼냄 |
Name-decoration convention 명명규칙 |
An underscore (_) is prefixed to the name. The name is followed by the at sign (@) followed by the number of bytes (in decimal) in the argument list. Therefore, the function declared as
|
Case-translation convention 대소문자 변환 |
None 없음 |
[호출규약 : __fastcall]
Element | Implementation |
---|---|
Argument-passing order 인자 전달 순서 |
The first two DWORD or smaller arguments are passed in ECX and EDX registers; all other arguments are passed right to left. 처음 두 개의 DWORD 이하의 크기를 가지는 인자는 ECX와 EDX레지스터로 전달, 나머지 인자는 오른쪽에서 왼쪽으로 스택을 통해 전달 |
Stack-maintenance responsibility 스택 정리 |
Called function pops the arguments from the stack. 불려진 함수가 스택에서 인자를 꺼냄 |
Name-decoration convention 명명 규칙 |
At sign (@) is prefixed to names; an at sign followed by the number of bytes (in decimal) in the parameter list is suffixed to names. 이름 앞에 @가 붙음. 이름 뒤에도 @표시가 붙고 그 뒤에 인자 목록의 바이트수가 10진수로 이어짐. |
Case-translation convention 대소문자 변환 |
No case translation performed. 변환 없음 |
'저장소 > VC++' 카테고리의 다른 글
[Error/Warning] warning C4995 (0) | 2009.09.23 |
---|---|
[Win32] GetFileAttributes (0) | 2009.09.22 |
[MSDN][VS6.0] Windows Data Types (0) | 2009.09.22 |
[MSDN][VS6.0] ASSERT (0) | 2009.09.22 |
[MSDN][VS6.0] IMPLEMENT_DYNCREATE (0) | 2009.09.22 |