함수 호출 규약

    [Dreamhack] Calling Convention 정리

    함수 호출 규약 함수의 호출 및 반환에 대한 약속. 함수의 흐름에 따라서, 함수를 호출하면 함수로 이동하고, 반환하면, 다시 원래 함수로 돌아가는 흐름을 보인다. 그래서 함수를 호출할 때는 반환된 이후를 위해 호출자(Caller)의 상태(Stack frame) 및 반환 주소(Return Address)를 저장해야 한다. 그리고 호출자는 피호출자(Callee)가 요구하는 인자를 전달 해줘야하고, 피호출자의 실행이 종료될 때는 반환 값을 전달받아야 한다. 일반적으로 컴파일러가 호출 규약에 맞게코드를 컴파일한다. 컴파일러는 CPU의 아키텍터에 적합한 호출규약을 선택한다. 하지만, 컴파일러의 도움 없이 어셈블릴 코드를 작성하려 하거나, 어셈블리로 작성된 코드를 읽으려면 함수 호출 규약을 알아야 한다. 함수 호출..