LINUX.ORG.RU

inline-asm


0

0

Не знаю как в gas сочинить локальные для функции метки. Они получаются глобальные для файла и поэтому, например нельзя вставлять ассемблерные куски в inline-функции.

inline void dodo(unsigned arg);

void calldo(){
dodo(1);
dodo(2);
dodo(3);
}

inline void dodo(unsigned arg){
asm("\n.loop\n\t"
"dec %eax\n\t"
"jnz .loop":/**/:"a"(arg));
}

Пример дурацкий но компилироваться не будет. gas скажет, что метка .loop уже определена

anonymous

Все зависит от точного поведения gas для конкретной архитектуры. Например, досточно часто доступна Кнутовская нотация, т.е.

branch 1f Это на первый вперед 1: something branch 1b .. Это на первый 1:

next branch 1b // это на второй

Есть и другие варианты, смотреть надо

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.