- calling convention(함수 호출 규약)이란 함수의 호출 및 반환에 대한 약속이다. 호출자(caller) 피호출자(callee)간의 함수의 인자를 전달하는 방식에 대한 규약이다.
- 컴파일러는 지원하는 호출 규약중, CPU 아키택처에 적합한 것을 선택한다.
- ex) x86(32bit): __cdecl
2.1. __cdecl 호출 규약
- 특징 1. stack을 통해 인자 전달 2. 인자를 전달하기 위해 사용한 stack callee가 정리 3. stack을 통해 인자를 전달할 때는, 마지막 인자 부터 첫번째 인자까지 거꾸로 push
2.2. SYSV 호출 규약
- 특징 1. 6개의 인자를 RDI, RSI, RDX, RCX, R8, R9에 순서대로 저장하여 전달, 더 많은 인자를 사용해야 할때는 스택을 추가로 사용 2. Caller(호출자)인자 전달에 사용되는 스택을 정리 3. 함수의 반환 값은 RAX로 전달