inlink함수는 macro와 비슷하다고 생각하시면 됩니다.
원래 함수라는 것이 수행을 할 때에는 다음과 같은 flow를 거치게 됩니다.
1. parameter를 stack에 push한다.
2. 해당 routine으로 call(ip를 stack에 push하고 jmp를 실행한다).
3. routine을 실행한다.
4. ret명령으로 call을 불렀던 모듈로 돌아 간다.
macro를 실행했을 때에는 1, 2, 4번의 과정이 없어지는 것입니다.
assembly를 봐도 call이 system clock을 많이 잡아 먹는 명령중의 하나인데
이런 일련의 부하가 없어지게 되는 것이지요.
암튼 정확한 것은 저도 모르겠고
assembly로 전환해서 살펴 보시면 될 겁니다.
newhuni 님이 쓰신 글 :
:
: 안녕하세여 뉴후닙니다.. ^^
:
: 인라인함수에 대해서 질문이 있슴돠.
:
: 간단한 함수에 inline을 붙여 인라인함수로 사용하면
: 일반함수보다 최적화 된다고 알고있는데
:
: 어떨때 인라인함수를 사용하는지 모르겠네여..
: 간단한 함수(?)라고 하는데 그의 정의를 모르겠네여...
:
: 그냥 프로그래머가 주관적으로 생각해서???
: 5라인 안쪽의 함수는 모두 인라인 함수로 처리해도 되나???
:
: 모주건 사용할 순 없지 않나여??? ^^
:
: 아시는분~~~
: 알려주시면 감사하겠습니다.. ^^
:
: 모든님들 감기조심하시구여... ~~~
|