# 함수 호출시에 사용한 매개변수를 정리하는 세가지 방법
- 함수가 종료 된 후에 호출시 사용한 매개변수를 저장한 스택 위치를 정리해 주는 방법으로 esp의
위치를 함수 호출이 일어나기 전의 위치를 옮겨 주는 것
1. __cdecl
- c/c++에서 디폴트로 사용
- 함수 호출 시 매개변수가 제일 우측에서 좌측 순서로 스택에 쌓인다
- 함수를 호출한 부모함수측에서 스택을 정리해 준다.([add esp, 숫자]의 형태로 표현)
2. __stdcall
- Windows API 에서 사용
- 함수 호출 시 매개변수가 제일 우측에서 좌측 순서로 스택에 쌓인다
- 호출당한 자함수측에서 스택을 정리 해준다. ([ret 숫자]의 형태로 표현)
3. __fastcall
- 매개변수가 두개 이하라면 ecx레지스터와 edx레지스터를 사용하며, 세개 이상이라면 가장 우측부터 스택에 쌓인다.
- 호출당한 자함수측에서 스택을 정리 해준다.
=> ecx레지스터와 edx레지스터를 매개변수 호출에 사용하기 때문에 스택에 ecx와 edx를 넣어 두고, 매개변수가 정리 된 후 스택에서 pop 시켜서 ecx와 edx를 복구 시켜준다.
# 어셈블리 코드
# 소스 코드