본문 바로가기

Layer7/WriteUp

x86, x64 Calling Convention(함수 호출 규약) 차이점 정리

32비트 함수 호출 규약

 

cdecl

C언어에서 사용되는 방식으로 call하는 쪽에서 스택을 정리한다.

 

stdcall

cdecl과 반대로 호출된 함수에서 스택을 정리한다.

 

fastcall

stdcall 방식과 같되 함수에 전달하는 파라미터 일부를 스택이 아닌 레지스터를 이용한다.

 

64비트 함수 호출 규약

fastcall 방식 하나만을 이용한다.

다만 변형된 fastcall 방식으로 함수 파라미터 4개까지 레지스터에 저장하여 전달한다.