1. 호출 규약
: 프로그래밍에서 함수를 호출할 때 정해저 있는 규칙을 의미한다.
함수 호출 규약의 분류 기준
1. 파라미터의 전달 방법
- 스택을 사용해서 전달할 것인가?, 레지스터를 사용해서 전달할 것인가?
2. 파라미터의 전달 순서
- 여러개의 파라미터를 어떤 파라미터부터 전달할 것인가?
3. 함수 호출간 사용했던 스택 정리방법
- 함수가 끝난후에 스택은 어디에서 정리할 것인가?
사용 방법
반환 형과 함수명 사이에 넣는다.
ex) void __stdcall add( int a, int a );
int __cdecl add(int a, int b);
2. 함수 호출 규약의 종류
호출 규약 |
스택 정리 |
인수전달 |
이름규칙 |
__cdecl |
호출원 |
오른쪽 먼저 |
_함수명 |
__stdcall |
함수 |
오른쪽 먼저 |
_함수명@인수크기 |
__fastcall |
함수 |
오른쪽 먼저 (ECX, EDX가장 먼저) |
@함수명@인수크기 |
thiscall |
함수 |
오른쪽 먼저 (this 포인터는 ecx레지스터로 전달된다. |
C++이름 규칙을 따름 |
naked |
함수 |
오른쪽 먼저 |
없음
|
'[ Programing ] > API' 카테고리의 다른 글
QT Programming (0) | 2020.06.26 |
---|---|
OutputDebugString 디버깅 출력 정보 콘솔로 출력 (0) | 2013.08.12 |
현재 시간 구하기 GetLoacalTime (0) | 2013.07.26 |
OutputDebugString() 출력 안될때[디버그] (0) | 2013.05.22 |
가상 피아노 프로그램 (0) | 2013.05.22 |