Jas*_*git 187
你试过这个吗?
gcc -S -masm=intel test.c
Run Code Online (Sandbox Code Playgroud)
未经测试,但我在这个有人声称它适合他们的论坛中找到了它.
我只是在Mac上尝试了这个并且它失败了,所以我查看了我的手册页:
-masm=dialect
Output asm instructions using selected dialect. Supported choices
are intel or att (the default one). Darwin does not support intel.
Run Code Online (Sandbox Code Playgroud)
它可能适用于您的平台.
对于Mac OSX:
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
Run Code Online (Sandbox Code Playgroud)
资料来源:https://stackoverflow.com/a/11957826/950427
pho*_*xis 16
该
gcc -S -masm=intel test.c
Run Code Online (Sandbox Code Playgroud)
和我合作.但我可以告诉另一种方式,虽然这与运行gcc无关.编译可执行文件或目标代码文件,然后用objdump反汇编Intel asm语法中的目标代码,如下所示:
objdump -d --disassembler-options=intel a.out
Run Code Online (Sandbox Code Playgroud)
这可能有所帮助.
小智 5
我在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;
};
Run Code Online (Sandbox Code Playgroud)
该代码适用于此GCC命令行:
gcc.exe File.cpp -masm=intel -mconsole -o File.exe
Run Code Online (Sandbox Code Playgroud)
它将产生*.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.
Run Code Online (Sandbox Code Playgroud)
就这样.
| 归档时间: |
|
| 查看次数: |
74519 次 |
| 最近记录: |