728x90
_cdecl
- 인자값 전달은 오른쪽부터
- 스택 정리는 caller (호출하는 함수가 스택에서 정리)
C언어에서 기본 호출 규약은 _cdecl이다.
최적화 옵션이 켜져 있어서 그런지, ida의 때문인지 실제 흐름과 다를 수 있지만 개념만 이해한다는 생각으로 하였다.
push 로 인자값을 역순으로 넣는다는 것을 알 수 있다. add esp, 14h
5 * 4 = 20 byte 총 5개의 인자가 들어간 것이다.
printf("a = %d, b = %d\n", a, b);
여기에서 총 3개의 인자가 들어가고, 두 번째 printf 에서 2개의 인자가 들어간다. 그리고 push 하며 늘어났던 20바이트의 스택을 함수 호출 이전의 상태로 만들어 주었다
728x90