반응형
함수 호출 규약, Function Calling Convention 에는 여러가지 종류가 있다.
각 호출 규약들은 파라미터 받는 순서, 인자 정리 하는 방법 등
여러가지 차이점들이 존재한다.
한번 알아보도록 하겠음.
1. __cdecl
C, C++ 에서 default 값으로 사용되는 호출 규약이다. 기본 호출 규약.
함수 호출자(caller)가 인자를 정리한다. 인자 호출은 오른쪽에서 왼쪽 즉, 뒤에서 부터 앞으로
__cdecl 은 함수 인자의 갯수를 미리 알고 호출하기 때문에 가변 인자를 호출할 수 있다.
함수 정의 방식은 "_함수명"
인자 정리를 add를 이용하여 한다.
2. __stdcall
Win32 API 함수들이 사용하는 호출 규약이다.
__cdecl과 다르게 함수 피호출자(callee)가 인자를 정리한다. (사실 cdecl빼고 다 callee가 정리한다.)
인자호출은 그대로 오른쪽->왼쪽
API 함수는 가변인자가 없으므로 인자 갯수를 미리 지정해준다.
함수 정의 방식은 "__stdcall 함수명"
인자 정리는 RETN 인자바이트수 로 callee가 정리함.
그리고 __fastcall 과 __pascall 이 있다.
(파스칼은 회사가 망해서 더이상 안쓴다한다.)
이것들은 당장은 알 필요가 없어 나중에 필요하면 추가하여 정리하도록 하겠습니당~
반응형
'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글
세그먼테이션(Segmentation) 과 페이징(Paging) (0) | 2021.04.17 |
---|---|
바이트 오더링 (Byte Ordering) (0) | 2021.04.17 |
메모리 스택(Stack)영역 (0) | 2021.04.17 |
x86 메모리 구조 (0) | 2021.04.17 |
리버싱(Reversing) 그리고 올리디버거(Ollydbg) (0) | 2021.04.17 |