C++ ABI 완전 정복: 바이너리 호환성의 비밀
Thoroughly Understanding C++ ABI

C++ ABI(Application Binary Interface)는 익숙하면서도 모호한 개념입니다. 이 글은 CPU, OS, 객체 파일 형식, 데이터 표현, 함수 호출 규약 등 ABI를 구성하는 요소들을 x64 플랫폼을 중심으로 자세히 설명합니다. 특히 Windows x64 ABI와 System V ABI의 차이점을 비교하고, 구조체 전달 방식과 unique_ptr의 효율성에 대한 흥미로운 사실을 소개합니다. ABI가 왜 중요한지, 그리고 바이너리 호환성을 유지하기 위해 무엇을 고려해야 하는지 이해하는 데 도움을 줍니다.
함수는 단지 바이너리 데이터의 조각일 뿐입니다. 함수를 실행한다는 것은 함수의 시작 주소로 점프하여 그 코드를 실행한 다음, 끝나면 다시 점프하여 돌아오는 것을 의미합니다.