Почему существует два способа написания встроенной сборки с помощью gcc? - PullRequest
5 голосов
/ 21 октября 2011
asm volatile(...);

__asm__ __volatile__(...);

Я вижу, что оба используются; зачем создавать дубликаты?

Ответы [ 2 ]

4 голосов
/ 21 октября 2011

Стандарт C резервирует «asm» для использования пользователями в любых целях.Следовательно, GCC предоставляет нотацию __asm__, чтобы избежать попадания в пространство имен пользователя (поскольку идентификаторы, начинающиеся с двойного подчеркивания, зарезервированы для реализации).

Нотация с двойным подчеркиванием является неловкой, поэтому GCC обеспечиваетинтерфейс pleasanter без двойных подчеркиваний.Но если вы включите стандартный режим компиляции (например, -std=c99), опция asm отключится.При написании с двойной нотацией подчеркивания он всегда доступен.

Итак, asm удобнее для чтения, но __asm__ соответствует стандарту C.

0 голосов
/ 21 октября 2011

С GCC Inline Assembly HOWTO"Возможно, вы заметили, что здесь я использовал asm и __asm__. Оба действительны. Мы можем использовать __asm__, если ключевое слово asm конфликтуетс чем-то в нашей программе. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...