검색결과 리스트
글
함수 주요 형태(_stdcall, _cdecl, _fastcall)
프로그래밍/C/C++
2014. 2. 24. 04:51
1. _cdecl
C 또는 C++ 프로그램에서 파라미터 전달시 디폴트로 사용
파라미터 전달은 오른쪽에서 왼쪽 방향으로 스택에 저장
파라미터 해제는 프로시저를 호출한 것이 책임짐(스택정리)
2. _stdcall
Windows API 프로시저에서 사용
파라미터 전달은 _cdecl과 동일
파라미터 해제는 프로시저 복귀 전에 이루어짐
장점
- 함수 독립성이 뛰어남
- 프로시저를 부르기 전에 스택에 파라미터를 쌓아놓고 그 프로시저를 부르기만 하면 그 함수가 리턴된 후에는 그 프로시저의 스택 포인터가
이전 상태로 복원되었으므로 복귀된 후에 호출한 프로시저에 대하여 신경쓸 필요가 없음.
- _cdecl 방식의 콜링컨벤션에 비해 코드 크기가 줄어든다.
- 스택을 해제하는 코드가 호출한 프로시저 안에 있으므로 이 프로시저가 여러 곳에서 호출된다 할지라도 스택 해제하는 코드는
프로시저 내에 하나만 존재함
3. _fastcall
처음 두 개까지의 파라미터는 스택을 사용하지 않고, ecx와 edx 레지스터를 사용함
그 이상의 파라미터에 대해서만 오른쪽에서 왼쪽으로 스택에 저장
스택 제거는 _stdcall과 동일
'프로그래밍 > C/C++' 카테고리의 다른 글
메모리 관리 함수(memset, memcpy, memmove) (0) | 2014.10.24 |
---|---|
C++ 파일 입출력 (0) | 2014.02.24 |
비트 연산자 (0) | 2014.02.12 |
함수 포인터 (0) | 2014.02.12 |
[STL]컨테이너 선택 (0) | 2014.02.09 |