Intro
C언어 프로그램의 함수호출 규약에 대해 알아보자
1. 함수호출 규약
- 함수 호출 규약(Calling Convention)이란 함수를 호출하는 방식에 대한 약속이다.
- 함수 호출 규약은 인자 전달 방법, 인자 전달 순서, Stack Frame을 정리하는 방법에 따라 그 종류를 구분한다.

1.1 32Bit 시스템 함수호출 규약
인자 전달 순서 |
인자 전달 방법 |
스택 프레임 정리 |
가변 인자 사용여부 |
|
|---|---|---|---|---|
| 1 | cdecl |
스택 메모리 사용 | Caller(호출자)가 정리 | 가능 |
| 2 | stdcall |
스택 메모리 사용 | Callee(피호출자)가 정리 | 불가능 |
| 3 | fastcall |
레지스터 및 스택메모리 사용 | 스택 메모리 사용시 Callee(피호출자)가 정리 | 불가능 |
1) cdecl
- 스택 메모리 사용
- Caller(호출자)가 스택 메모리 정리

2) stdcall
- 스택 메모리 사용
- Callee(피호출자)가 스택 메모리 정리

3) fastcall
- 레지스터 사용 (레지스터 사용으로 인해 메모리 정리 과정 생략)
