Wbudowany asembler Borland x86; uzyskać adres etykiety?

Używam Borland Turbo C ++ z pewnym kodem assemblera, więc przypuszczalnie Turbo Assembler (TASM) kod zespołu stylu. Chcę wykonać następujące czynności:

void foo::bar( void )
{
    __asm
    {
      mov eax, SomeLabel
      // ...
    }
    // ...
SomeLabel:
    // ...
}

Więc adres SomeLabel jest umieszczany w EAX. To nie działa i kompilator skarży się na: Niezdefiniowany symbol „SomeLabel”.

W Microsoft Assembler (MASM) symbol dolara ($) służy jako aktualny licznik lokalizacji, który byłby użyteczny dla mojego celu. Ale to znowu nie działa w Borlands Assember (błąd składni wyrażenia).

Aktualizacja: Aby być trochę bardziej szczegółowym, potrzebuję kompilatora do wygenerowania adresu, który zmienia się w eax jako stałą podczas kompilacji / łączenia, a nie w czasie wykonywania, więc będzie kompilowany jak „mov eax, 0x00401234”.

Czy ktoś może zasugerować, jak to działa?

AKTUALIZACJA: Aby odpowiedzieć na pytanie Paxa (patrz komentarz), Jeśli adres bazowy zostanie zmieniony w czasie wykonywania przez program ładujący Windows, obraz PE DLL / EXE będzie nadal przenoszony przez program ładujący Windows, a adres etykiety zostanie poprawiony w czasie wykonywania przez program ładujący użyje adresu ponownego użycia, więc użycie wartości czasu kompilacji / linku dla adresu etykiety nie stanowi problemu.

Z góry bardzo dziękuję.

questionAnswers(12)

yourAnswerToTheQuestion