3 ответов:
вы пробовали это?
gcc -S -masm=intel test.cнепроверенные, но я нашел его в этом форуме где кто-то утверждал, что это работает для них.
Я только что попробовал это на mac, и это не удалось, поэтому я посмотрел в моей man-странице:
-masm=dialect Output asm instructions using selected dialect. Supported choices are intel or att (the default one). Darwin does not support intel.Он может работать на вашей платформе.
для Mac OSX:
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
The
gcc -S -masm=intel test.cработает со мной. Но я могу сказать по-другому, хотя это не имеет ничего общего с запуском gcc. Скомпилируйте исполняемый файл или файл объектного кода, а затем разберите объектный код в синтаксисе Intel asm с помощью objdump, как показано ниже:
objdump -d --disassembler-options=intel a.outЭто может помочь.
у меня есть этот код в файле CPP:
#include <conio.h> #include <stdio.h> #include <windows.h> int a = 0; int main(int argc, char *argv[]) { asm("mov eax, 0xFF"); asm("mov _a, eax"); printf("Result of a = %d\n", a); getch(); return 0; };вот код, работающий с этой командной строкой GCC:
gcc.exe File.cpp -masm=intel -mconsole -o File.exeэто приведет *.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.вот и все.
Comments