Как вы используете gcc для генерации ассемблерного кода в синтаксисе Intel?
151
gcc -SВариант будет генерировать код сборки в AT & T синтаксис, есть способ для создания файлов в синтаксисе Intel? Или есть способ конвертировать между ними?
Вы можете легко конвертировать отдельные инструкции в оболочке с помощью llvm-mc: echo "packsswb mm0,[bp+si-0x54]" | llvm-mc-3.2 -x86-asm-syntax=intelgivepacksswb -84(%bp,%si), %mm0
Janus Troelsen
Ответы:
198
Вы пробовали это?
gcc -S -masm=intel test.c
Не проверенный, но я нашел это на этом форуме, где кто-то утверждал, что это работало на них.
Я только что попробовал это на Mac, и это не удалось, поэтому я заглянул в мою справочную страницу:
-masm=dialect
Outputasm instructions using selected dialect.Supported choices
are intel or att (the default one).Darwin does not support intel.
Работает ли со мной. Но я могу сказать по-другому, хотя это не имеет ничего общего с запуском gcc. Скомпилируйте исполняемый файл или файл объектного кода, а затем разберите объектный код в синтаксисе Intel asm с помощью objdump, как показано ниже:
Это приведет к * .exe файла, и это сработало в моем опыте.
Notes:
immediate operand must be use _variable in global variabel, not local variable.
example: mov _nLength, eax NOT mov $nLength, eax or mov nLength, eax
A number in hexadecimal format must use at&t syntax, cannot use intel syntax.
example: mov eax,0xFF-> TRUE, mov eax,0FFh-> FALSE.
echo "packsswb mm0,[bp+si-0x54]" | llvm-mc-3.2 -x86-asm-syntax=intel
givepacksswb -84(%bp,%si), %mm0
Ответы:
Вы пробовали это?
Не проверенный, но я нашел это на этом форуме, где кто-то утверждал, что это работало на них.
Я только что попробовал это на Mac, и это не удалось, поэтому я заглянул в мою справочную страницу:
Это может работать на вашей платформе.
Для Mac OSX:
Источник: https://stackoverflow.com/a/11957826/950427
источник
prefix
/noprefix
(не уверен, имеет ли это значение, если Clang потребляет сборку).The
Работает ли со мной. Но я могу сказать по-другому, хотя это не имеет ничего общего с запуском gcc. Скомпилируйте исполняемый файл или файл объектного кода, а затем разберите объектный код в синтаксисе Intel asm с помощью objdump, как показано ниже:
Это может помочь.
источник
У меня есть этот код в файле CPP:
Вот код, работающий с этой командной строкой GCC:
Это приведет к * .exe файла, и это сработало в моем опыте.
Вот и все.
источник
$ gcc -S -masm=intel -mconsole a.c -o a.out gcc: error: unrecognized command line option ‘-mconsole’
-o a.out
вы не получите файл .s.