该gcc -S选项将以 AT&T 语法生成汇编代码,有没有办法以 Intel 语法生成文件?或者有没有办法在两者之间转换?
gcc -S
-masm=intel
gcc -S -masm=intel -Og -fverbose-asm test.c
这适用于 GCC,以及 clang3.5 及更高版本。 GCC 手册:
-masm=dialect 使用选定的方言输出 asm 指令。支持的选项是 intel 或 att(默认选项)。达尔文不支持英特尔。
-masm=dialect
对于 Mac OSX,请注意默认情况下,该gcc命令实际上运行 clang。现代 clang 支持-masm=intel作为这个的同义词,但这总是适用:
gcc
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
请注意,在 clang 14 之前,这不会 改变 clang 处理内联asm()语句的方式,这与 GCC 不同。
asm()
这些是 Matt Godbolt 的 Compiler Explorer 站点默认使用的选项:https ://godbolt.org/