WinCNT

함수 호출 규약(Calling Convention) 본문

게임 프로그래밍(학습 내용 정리)/C

함수 호출 규약(Calling Convention)

WinCNT_SSS 2022. 4. 25. 14:08

함수 호출 규약(콜링 컨벤션, Calling Convention)

함수 호출 규약이란 함수를 호출하는 방식에 대한 규약(약속)이다

 

함수를 호출할 때에는 CPU가 함수를 어떻게 처리할 것인지에 대한 규약이 필요하다

 

함수 호출 규약의 종류는 다음에 따라 구분된다

1. 인자 전달 방법

2. 인자 전달 순서

3. Stack Frame을 정리하는 방법


함수를 호출할 때 호출 규약이 있어야 함

특히 DLL 작성 시 관련 개념이 필수

내가 모르는 코드(DLL)을 붙을 때 호출 규약이 다르면 문제가 발생한다

 

대표적인 함수 호출 규약으로는 cdecl, stdcall, fastcall이 있으며,

그 외에도 clrcall, thiscall, pascal, syscall, fortran가 있다

 

EBP 기준

main함수, 특정 함수의 EBP는 각각 다르다

EBP가 있어서 지역변수로 접근할 수 있다

호출 규약에 따라 EBP를 저장하고 불러오고 하는 것이 다르다

 

참고 사이트)

https://blog.kimtae.xyz/7

 

함수호출규약

1. 함수 호출 규약 개요 함수 호출 규약(Calling Convention)이란, 함수를 호출하는 방식에 대한 약속이다. 함수 호출 규약은 인자 전달 방법, 인자 전달 순서, Stack Frame을 정리하는 방법에 따라 그 종

blog.kimtae.xyz

https://eliez3r.github.io/post/2019/10/16/study-system.Stack-Frame.html

 

스택프레임(Stack Frame) 이란? - eli_ez3r Hacking Blog

스택 프레임(Stack Frame)이란 함수가 호출될 때, 그 함수만의 스택 영역을 구분하기 위하여 생성되는 공간이다. 이 공간에는 함수와 관계되는 지역 번수, 매개변수가 저장되며, 함수 호출 시 할당

eliez3r.github.io

 

SSS