확실하지는 않지만, 아주 오래전에 터보 C를 쓸 때 공부한 기억으로는, 터보C/볼랜드C++ 등 볼랜드의 인라인 어셈블리에서는 레이블 이름 앞에 @를 붙여야 했던 걸로 기억합니다.
지금의 C++빌더 헬프에는 인라인 어셈블리에 대해 나와있지 않지만, 델파이 헬프에서는 @를 붙여야 한다고 명시되어 있네요. 델파이도 터보 C와 마찬가지로 아주 오래전의 터보 파스칼부터 인라인 어셈블리의 레이블에는 @를 붙여야 했던 것으로 기억합니다.
Local labels are labels that start with an at-sign (@). They consist of an at-sign followed by one or more letters, digits, underscores, or at-signs.
인라인 어셈블리에서 비주얼 C++과 볼랜드 C++이 다른 이유는, 제가 알기로는 인라인 어셈블리 키워드인 asm 자체가 비표준인 때문으로 알고 있습니다.
김문수 님이 쓰신 글 :
: 인라인 어셈에대해서 질문 드립니다.
: 빌더 2007 사용중입니다.
:
:
: //---------------------------------------------------------------------------
: __asm
: {
: .
: (생략)
: .
: add eax,4;
:
: call ded;
:
: ded:
: pop ecx;
: .
: (생략)
: .
: }
: //---------------------------------------------------------------------------
:
:
: 위와 같은 어셈 코드를 작성후 컴파일하면...
: 빌더에서 [BCC32 Error] GrapicObject_C.cpp(43): E2451 Undefined symbol 'ded'
:
: 위와같이 라벨을 인식하지 못하는 경우를 보게되었는데요..
:
: 해결방법은 없는지 알고싶습니다.
|