Answers:
你有尝试过吗?
gcc -S -masm=intel test.c
未经测试,但我在这个论坛上找到了它,有人声称它为他们工作。
我只是在Mac上尝试了一下,但失败了,因此我在手册页中进行了查找:
-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
prefix
/ noprefix
(不确定Clang是否使用程序集是否重要)。
的
gcc -S -masm=intel test.c
和我一起工作。但是我可以说另一种方式,尽管这与运行gcc无关。编译可执行文件或目标代码文件,然后使用objdump以Intel asm语法反汇编目标代码,如下所示:
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.
就这样。
$ gcc -S -masm=intel -mconsole a.c -o a.out gcc: error: unrecognized command line option ‘-mconsole’
-o a.out
,则不会获得.s文件。
echo "packsswb mm0,[bp+si-0x54]" | llvm-mc-3.2 -x86-asm-syntax=intel
给packsswb -84(%bp,%si), %mm0