флаг встроенного ассемблера x86

Глупый вопрос, но я просто не могу найти нужный флаг в gcc. По сути, у меня в моей программе на C есть следующий встроенный код ассемблера

__asm__ __volatile__ ("lea ebx, [timings] \n\t");

При компиляции я получаю сообщение об ошибке: Error: invalid char '[' beginning operand 2 [timeings] '`

Теперь я вспоминаю, что давным-давно я использовал какой-то флаг, который сообщал компилятору, что это встроенная сборка x86. Но не могу найти его в Интернете, может быть, кто-нибудь скажет мне, какой флаг мне нужно использовать?

Большое спасибо!


person Community    schedule 23.06.2009    source источник


Ответы (2)


Вы не можете указать переменные таким образом с помощью GCC. Подробное описание того, как использовать встроенный ассемблер. Также имейте в виду, что GCC использует синтаксис AT&T, а не синтаксис Intel, поэтому вам нужно указать места назначения справа.

person Adam Rosenfield    schedule 23.06.2009
comment
Я делал это раньше, вы можете указать компилятору, что используете синтаксис Intel, но, глупый, я забыл, как это сделать - person ; 24.06.2009
comment
Не знаю, насколько хорошо это работает, но из документации GCC: -masm=DIALECT' Output asm instructions using selected DIALECT. Supported choices are intel 'или att' (the default one). Darwin does not support intel'. - person ephemient; 25.06.2009

Попробуйте вместо этого использовать __asm__. Дополнительные сведения см. здесь.

Также попробуйте удалить \ n \ t из кода сборки.

person samoz    schedule 23.06.2009