- cdecl
- fastcall
- stdcall
"함수를 호출할 때 파라미터(인자)를 어떤 식으로 전달하는지에 대해 정해놓은 일종의 약속
용어 : caller -> 함수를 호출한 쪽, callee -> 함수 호출을 당한 쪽
- 주로 C언어에서 사용되는 방식
- caller에서 스택을 정리한다. 예를들어 main이 A라는 함수를 호출했다면 main이 자신이 스택에 입력한 함수 파라미터를 직접 정리
- 장점 : 가변 길이 파라미터를 전달할 수 있다.
- Win32 API에서 사용되는 방식
- callee가 스택을 정리함
- stdcall으로 컴파일 하고 싶을때는 _stdcall 키워드를 붙여주면됨.
- 장점 : 코드의 크기가 작아진다.
- 기본적으로 stdcall 방식과 같지만 함수에 전달되는 파라미터의 일부를 스택이 아닌 레지스터를 이용하여 전달
- 장점 : 좀 더 빠른 함수 호출이 가능
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.
함수 호출 규약
요약
- cdecl
- fastcall
- stdcall
정의
"함수를 호출할 때 파라미터(인자)를 어떤 식으로 전달하는지에 대해 정해놓은 일종의 약속
용어 : caller -> 함수를 호출한 쪽, callee -> 함수 호출을 당한 쪽
cdecl
- 주로 C언어에서 사용되는 방식
- caller에서 스택을 정리한다. 예를들어 main이 A라는 함수를 호출했다면 main이 자신이 스택에 입력한 함수 파라미터를 직접 정리
- 장점 : 가변 길이 파라미터를 전달할 수 있다.
stdcall
- Win32 API에서 사용되는 방식
- callee가 스택을 정리함
- stdcall으로 컴파일 하고 싶을때는 _stdcall 키워드를 붙여주면됨.
- 장점 : 코드의 크기가 작아진다.
fastcall
- 기본적으로 stdcall 방식과 같지만 함수에 전달되는 파라미터의 일부를 스택이 아닌 레지스터를 이용하여 전달
- 장점 : 좀 더 빠른 함수 호출이 가능
'Technique' 카테고리의 다른 글