ISA와 어셈블리
호출 규약(콜링 컨벤션)이 정해져 있는 주된 목적은?
- A함수 이름 짓는 방식을 통일하여 프로그램을 읽기 쉽게 한다
- B따로 컴파일한 함수나 라이브러리끼리 인자와 반환값을 올바르게 주고받을 수 있게 한다
- C함수를 호출할 때마다 OS의 허가를 받도록 한다
정답과 해설 보기
정답: B. 따로 컴파일한 함수나 라이브러리끼리 인자와 반환값을 올바르게 주고받을 수 있게 한다
호출 규약은 인자를 어느 레지스터에 넣는지, 반환값은 어디로 돌려주는지, 호출받은 쪽이 어느 레지스터를 망가뜨려도 되는지, 스택을 어떻게 사용하는지를 정합니다. 이 약속이 있으므로 다른 컴파일러로 만든 라이브러리나, 어셈블리로 작성한 함수와 C 언어 함수를 조합해도 올바르게 동작합니다. 호출 규약은 ABI(애플리케이션 바이너리 인터페이스)의 중요한 일부입니다.