__asm 인라인 어셈블러 내에서
서브루틴 호출은 다음과 같은 식으로 꾸며야 합니다.
void __declspec(naked) ded()
{
asm
{
add eax, 3
ret
}
}
호출하는 쪽
asm
{
add eax, 4
call ded
}
__asm 인라인 어셈블리 블럭 안에서 모든게 해결되면 좋겠지만
원래 인라인어셈블리는 C/C++코드와 상호작용에 중점을 두었기 때문에
이런 식으로 호출해 주면 됩니다.
김문수 님이 쓰신 글 :
: 인라인 어셈에대해서 질문 드립니다.
: 빌더 2007 사용중입니다.
:
:
: //---------------------------------------------------------------------------
: __asm
: {
: .
: (생략)
: .
: add eax,4;
:
: call ded;
:
: ded:
: pop ecx;
: .
: (생략)
: .
: }
: //---------------------------------------------------------------------------
:
:
: 위와 같은 어셈 코드를 작성후 컴파일하면...
: 빌더에서 [BCC32 Error] GrapicObject_C.cpp(43): E2451 Undefined symbol 'ded'
:
: 위와같이 라벨을 인식하지 못하는 경우를 보게되었는데요..
:
: 해결방법은 없는지 알고싶습니다.
|