При использовании встроенной сборки с компилятором XLC (для powerpc) метки переводятся, и в результате невозможно узнать окончательное имя метки для переходов.Пример:
int main()
{
__asm__("mylabel:");
__asm__("nop");
__asm__("b mylabel");
}
Если я скомпилирую предыдущий код, используя GCC, все работает как положено.Однако при использовании XLC сгенерированная сборка выглядит следующим образом:
...
.L1
nop
b mylabel
...
Очевидно, что программа не может быть скомпилирована, поскольку «mylabel» никогда не определяется.Определение «mylabel» автоматически переводится на имя «.L1».На самом деле это имя зависит от количества определенных локальных меток.Таким образом, это могут быть ".L1", ".L2" ...
Я пытался использовать asm, __asm вместо __asm__, но получаю тот же вывод.Отключение оптимизации компилятора также не работает.Кто-нибудь знает, как сохранить локальные имена меток при генерации сборки в XLC?Любой другой обходной путь тоже поможет.
Спасибо,