LINUX.ORG.RU

GCC: ассемблерная вставка.


0

0

Есть кусок ассемблерной вставки в текст кодан на C, который нормально компилится Watcom-ом:

unsigned char n;

_asm { mov eax, 2 cpuid mov n, al };

Как этот кусок должен выглядеть, чтобы его понимал GCC?

anonymous

Re: GCC: ассемблерная вставка.

unsigned char n;
asm("mov %%eax,2\n"
"cpuid\n": "=a"(n));

io ★★ ()
Ответ на: Re: GCC: ассемблерная вставка. от io

Re: GCC: ассемблерная вставка.

Я его привел в такой вид:

asm("mov %%eax, 2"
"cpuid"
:"=a"(n));

И не компилится этот код.

anonymous ()
Ответ на: Re: GCC: ассемблерная вставка. от anonymous

Re: GCC: ассемблерная вставка.

Переводы строк нужны обязательно. Этот код просто подставляется (с подстановкой регистров) в S файл.

alexru ★★★★ ()
Ответ на: Re: GCC: ассемблерная вставка. от alexru

Re: GCC: ассемблерная вставка.

Нифига себе, вернул как было - и все откомпилилось! :) Пипец с этим синтаксисом...

Спасибо, но теперь оно говорит Segmentation Fault.

а в этой записи точно из регистра al копируется число?

anonymous ()
Ответ на: Re: GCC: ассемблерная вставка. от anonymous

Re: GCC: ассемблерная вставка.

А почему бы не использовать intel-синтаксис в gcc если Вы уж так привыкли?

__asm__ __volatile__
(
".intel_syntax\n\t"
"cli\n\t"
".att_syntax"
);

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