728x90
x86 함수 호출 규약:
stdcall: 인자들을 스택에 푸시하며, 호출된 함수(callee)가 스택 정리를 담당합니다. 이 규약은 Windows API 함수에서 주로 사용됩니다.
cdecl: 인자들을 스택에 푸시하며, 호출하는 함수(caller)가 스택 정리를 담당합니다. 이 규약은 일반적인 함수에서 주로 사용됩니다.
fastcall: 첫 두 개의 인자를 ECX와 EDX 레지스터에 저장하고, 나머지 인자들은 스택에 푸시합니다. 호출된 함수(callee)가 스택 정리를 담당합니다. 이 규약은 최적화가 필요한 함수에서 사용됩니다.
thiscall: 인스턴스 포인터를 ECX에 저장하고, 나머지 인자들은 스택에 푸시합니다. 호출된 함수(callee)가 스택 정리를 담당합니다. 이 규약은 클래스의 멤버 함수에서 사용됩니다.
x86-64 함수 호출 규약:
MS ABI: 첫 네 개의 인자를 RCX, RDX, R8, R9 레지스터에 저장합니다. 호출하는 함수(caller)가 스택 정리를 담당합니다. 이 규약은 일반적인 함수와 Windows syscall에서 사용됩니다.
System V ABI: 첫 여섯 개의 인자를 RDI, RSI, RDX, RCX, R8, R9 레지스터에 저장하고, 나머지 인자들은 스택에 푸시합니다. 호출하는 함수(caller)가 스택 정리를 담당합니다. 이 규약은 일반적인 함수에서 사용됩니다.
728x90
'호그와트' 카테고리의 다른 글
today my lunch hacking exercise (it is like my lunch snack) (0) | 2023.08.02 |
---|---|
저는 GPT4가 이렇게 좋은 줄 몰랐어요 (0) | 2023.08.01 |
블록체인 기반 언어 학습 토큰 생태계 모델 코드 제안 (0) | 2023.07.25 |
오늘도 즐거운 해킹 실습 (2) | 2023.07.19 |
Tryhackme GOD & Kaggle Expert 동시 달성 (feat. 주체적이고 깊은 생각) (0) | 2023.07.13 |