2011. 5. 2. 14:48


Calling Convention 호출 규약.

엊그제 호출규약에 때문에 존나 삽질한게 생각나서 정리좀 하려 한다.
알고 나면 간단하게 해결 될 문제지만 모르면 존나게 삽질 할 수 있다. 그리고 필자와 비슷한 상황이라면 더욱이 알아채기가 곤란하다. 만약 필자의 상황이 궁금하다면 아래의 링크를 클릭!

필자의 개삽질 퍼레이드 : http://ffun.tistory.com/entry/stdcall-cdecl





호출 규약
1. __cdecl ( 생략 가능, 만약 함수 선언시 호출규약을 따로 정하지 않아다면 본 방법으로 호출된다. )
2. __stdcall
3. __fastcall

__clrcall, __thiscall, __pascal, __syscall, __fortran
이렇게 더 있다는데 솔직히 시발 저 중에 본게 __clrcall 정도 본것 같다. 여튼 시발 저 호출규약은 별 신경 안써도 될 녀석이기에 생략하고 3가지 방법에 대해서만 비교한다.

호출 규칙
1. 인자의 전달 방법
2. 인자의 전달 순서
3. stack 영역의 해제 방법

Name Decoration ( 일명 "이름 짓기" )
상기에 적힌 호출 규칙에 따라 호출 규약이 정해지지만 호출 규약에 따라 함수의 이름이 다르게 적재 될 경우가 있다. 물론 우리는 그냥 사용하던대로 쓰면 된다.

인터넷에 보면 뭐 예제소스 만들어 놓고 어셈블로 까서 pop, push 이리저리 존나게 설명 해놨는데 필자같은 경우는 어셈블러를 잘 모를 뿐더러 알고 싶지도 않다. 기냥 그딴거 필요 없고 딱 표 하나면 끝!



이리 시발 간단한걸 뭘 그렇게 시발 존나게 눈깔 빠지게 글들을 많이 써놨데 ㅋㅋ


'프로그래밍' 카테고리의 다른 글

SQLite 설치 및 사용법  (5) 2011.05.11
Name Mangling (Name Decoration)  (0) 2011.05.03
extern 이라는 키워드에 대한 고찰  (3) 2011.05.02
COFF -> OMF (VS Import Library -> Boland Import Library)  (0) 2011.05.01
DllMain()  (1) 2011.05.01
Posted by 뿌직