Calling Convention

동글래차·2023년 5월 28일
0

system

목록 보기
2/4

1. Calling Convention?

  • calling convention(함수 호출 규약)이란 함수의 호출 및 반환에 대한 약속이다. 호출자(caller) 피호출자(callee)간의 함수의 인자를 전달하는 방식에 대한 규약이다.

2. Calling Convention의 종류

  • 컴파일러는 지원하는 호출 규약중, 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로 전달

- 호출 규약 정리

profile
동글동글

0개의 댓글

관련 채용 정보