본문 바로가기
Reversing/Reversing

함수 호출 규약

by bbolmin 2012. 10. 16.

 

함수 호출 규약

 

 

cdecl

 

test(1, 2, 3, 4)

 

push 4

push 3

push 2

push 1

call test

add esp, 16

 

 

stdcall

 

test(1, 2, 3, 4)

 

push 4

push 3

push 2

push 1

call test  --> test함수 내부에서 ret 16 수행

 

 

 

fastcall

 

파라미터 : CPU 레지스터 2개 이용. (ECX, EDX)

 

test(1, 2, 3, 4)

 

push 4

push 3

mov edx, 2

mov ecx, 1

call test  --> test함수 내부에서 ret 16 수행

 

 

 

 

c++ 호출 규약

 

비주얼 c++ :  this를 ecx에 넣고 stdcall 처럼 동작.

g++ : 첫 번째 파라미터에 암시적으로 this를 넣고 cdecl 처럼 동작.

 

 

'Reversing > Reversing' 카테고리의 다른 글

static 안티 디버깅  (0) 2013.01.03
PE의 IAT입력 과정  (0) 2012.10.31
Windbg 명령어 요약  (0) 2012.10.13
혼동되는 어셈블리 명령어  (2) 2012.10.07
어셈블리어의 주소 지정 방식  (0) 2012.09.10