Все, что я могу найти о Borland, предполагает, что это должно сработать. Подобные вопросы на других сайтах ( здесь и здесь ) предполагают, что Borland может обрабатывать прямые ссылки на метки, но настаивает на том, чтобы метки находились вне блоков asm. Однако, поскольку ваша метка уже была вне блока asm ...
Мне любопытно, позволит ли ваш компилятор использовать эту метку, например, в инструкции jmp. Работая с ним (по общему признанию, на совершенно другом компиляторе), я обнаружил досадную склонность компилятора жаловаться на типы операндов.
Синтаксис совсем другой, и это моя первая попытка inline asm за долгое время, но я считаю, что я сделал это достаточно для работы под gcc. Возможно, несмотря на различия, это может быть полезным для вас:
#include <stdio.h>
int main()
{
void *too = &&SomeLabel;
unsigned int out;
asm
(
"movl %0, %%eax;"
:"=a"(out)
:"r"(&&SomeLabel)
);
SomeLabel:
printf("Result: %p %x\n", too, out);
return 0;
}
Создает:
...
movl $.L2, %eax
...
.L2:
Оператор && является нестандартным расширением, я не ожидал бы, что он будет работать где-либо, кроме gcc. Надеюсь, это могло вызвать новые идеи ... Удачи!
Редактировать: Хотя он указан как специфичный для Microsoft, здесь является еще одним примером перехода к меткам.