본문 바로가기
한국으로/ARM

호출 규약 __cdecl 과 __stdcall의 차이점

by 영킴. 2018. 7. 21.

__cdecl (C declaration)

함수를 호출한 쪽(Caller)에서 인자를 제거하고 스택을 정리.
가변인자 사용 가능.


__stdcall (standard call)

호출된 쪽(Callee)에서 직접 스택을 정리.
가변인지 사용 불가능. 호출된 함수가 인자의 개수를 알 수 없어서 인자에 대한 스택정리에 오류있음.


__fastcall

호출된 쪽(Callee)에서 직접 스택을 정리.



공통적으로 인자는 우측부터 높은 주소가 전달된다.
ARM은 __cdecl과 __fastcall을 섞어쓴다.
그리고 OS가 호출하는 함수는 되도록이면 __stdcall을 쓰자.



'한국으로 > ARM' 카테고리의 다른 글

정수 승격과 형변환 문제  (0) 2018.07.22
다중 메모리 이동: LDM, STM  (0) 2018.07.22
AAPCS와 레지스터 테이블  (0) 2018.07.21
ARM의 특수 용도 레지스터  (0) 2018.07.21
volatile이 필요한 경우  (0) 2018.07.21
C Runtime Startup  (0) 2018.07.21
어셈블리어로 반복 프로그램 짜기  (0) 2018.07.21
어셈블리어 명령어  (0) 2018.07.21