Spec-Zone.ru › GCC 5

6.43.4 Управление именами, используемыми в коде ассемблера

Вы можете указать имя, которое будет использоваться в коде ассемблера для C-функции или переменной, написав ключевое слово asm (или __asm__) после декларатора следующим образом:

int foo asm ("myfoo") = 2;

Это указывает, что имя, которое должно использоваться для переменной foo в коде ассемблера, должно быть ‘myfoo’, а не обычное ‘_foo’.

В системах, где перед именем C-функции или переменной обычно ставится знак подчеркивания, эта функция позволяет определять имена для компоновщика, которые не начинаются с подчеркивания.

Использование этой функции с нестатической локальной переменной не имеет смысла, так как такие переменные не имеют имен в ассемблере. Если вы пытаетесь поместить переменную в определенный регистр, см. Явные переменные регистров. GCC в настоящее время принимает такой код с предупреждением, но в будущем, вероятно, будет выдавать ошибку вместо предупреждения.

Вы не можете использовать asm таким образом в определении функции; но вы можете получить тот же эффект, написав объявление для функции перед её определением и поместив asm туда, как показано ниже:

extern func () asm ("FUNC");

func (x, y)
     int x, y;
/* … */

Вам необходимо убедиться, что выбранные вами имена ассемблера не конфликтуют с другими символами ассемблера. Кроме того, нельзя использовать имя регистра; это приведет к созданию совершенно неверного кода ассемблера. В настоящее время GCC не имеет возможности хранить статические переменные в регистрах. Возможно, это будет добавлено в будущем.

Далее: Явные переменные регистров, Предыдущее: Ограничения, Вверх: Использование языка ассемблера с C [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/Asm-Labels.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API