Windows/Reversing
[Windows] 함수호출 규약 (Calling Convention) (x86)
dool2ly
2015. 10. 13. 00:29
cdecl
- C에서 default로 사용
- Caller가 스택 정리(ex: ADD ESP,8)
- 가변 갯수의 Parameter전달 가능
stdcall
- Win32API에서 사용 -> 호환성을 위해
- Callee가 스택 정리(ex: RETN 8)
- 코드 크기 줄어듬
fastcall
- stdcall과 동일하나 parameter 전달시 ECX,EDX 레지스터를 이용
- parameter가 2개이상일경우 스택이용
- 메모리(스택)이 아닌 레지스터(CPU)를 이용하여 빠른속도
- ECX, EDX 레지스터 필요시 백업 -> 코드 크기 늘어남