
함수 호출 규약 정리 Function Calling Convention
·
Notes/System
어느 함수에서 다른 함수를 호출하는 상황을 생각해보자. 기존 함수에서 현재 스택의 상태로 복귀할 수 있도록 현재의 스택 포인터가 가리키고 있는 위치를 기억하고(Caller의 스택 프레임 상태), 리턴 주소(Caller가 Callee를 호출한 주소값)를 어딘가에 저장해둘 필요가 있겠다. 함수 호출 규약이란 간단히 말해 이러한 정보를 어떻게 저장하고 로드할 것인가에 대한 약속이라고 생각하면 된다. 물론 이러한 과정은 컴파일러에 의해 처리되는 것이 일반적이기 때문에 사용자는 컴파일러의 configuration에서 본인이 원하는 규약을 선택해주기만 하면 된다. ( MSVC기준으로 언어별로 자동 선택되는 것인줄 알았는데, 컴파일러에서 컴파일중인 장치의 아키텍처를 보고 적절한 호출 규약을 알아서 선택하게 된다고 한..