정리

[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 int func( int a, double b ) is decorated as follows: _func@12

이름 앞에 _가 붙음. 이름 뒤에는 @표시가 붙고 그 뒤에 인자 목록의 바이트수가 10진수로 이어짐. 따라서, inf func( int a, double b )는 _func@12 와 같이 명명됨

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