从icc获取英特尔语法asm输出,而不是默认的AT&;T语法?
我被一个问题困住了。我已经使用gcc编译/汇编我的C代码一段时间了,并且已经习惯于阅读英特尔汇编语法。我在生成程序集文件时使用了从icc获取英特尔语法asm输出,而不是默认的AT&;T语法?,c,assembly,syntax,icc,intel-syntax,C,Assembly,Syntax,Icc,Intel Syntax,我被一个问题困住了。我已经使用gcc编译/汇编我的C代码一段时间了,并且已经习惯于阅读英特尔汇编语法。我在生成程序集文件时使用了-masm=intel标志 但最近,由于公司迁移,他们获得了英特尔的icc,声称它更好。所以现在我需要使用icc,但奇怪的是它有默认的汇编语法,如AT&T。我试图更改它,但它不起作用,所以我联系了英特尔支持部门,他们也不知道,每个人都给了我一个矛盾的答案 是否有一种集成gcc和icc的方法,以便我使用icc的编译“优势”,同时使用gcc编译英特尔的语法 我正在使用ubu
-masm=intel
标志
但最近,由于公司迁移,他们获得了英特尔的icc,声称它更好。所以现在我需要使用icc,但奇怪的是它有默认的汇编语法,如AT&T。我试图更改它,但它不起作用,所以我联系了英特尔支持部门,他们也不知道,每个人都给了我一个矛盾的答案
是否有一种集成gcc和icc的方法,以便我使用icc的编译“优势”,同时使用gcc编译英特尔的语法
我正在使用ubuntu,并获得了icc 12.x版这个标志
-use_msasm Support Microsoft style assembly language insertion
using MASM style syntax and, if requested, output assem-
bly in MASM format
看来,
-masm=intel
就像Clang和GCC一样,至少在(13.0.1)的当前最新版本中是如此。我尝试加载数组上的和示例,它生成以下程序集
testFunction(int*, int):
xor eax, eax #2.11
test esi, esi #3.23
jle ..B1.18 # Prob 50% #3.23
movsxd rdx, esi #3.3
...
然而,像Steve-o的答案中那样指定-使用msasm
根本不起作用
他们说这是-使用msasm
,而不是-使用{msasm
,但这也不起作用
- 支持使用MASM样式语法插入Microsoft*样式的汇编语言,并在需要时以MASM格式输出程序集
- 注意:GNU内联汇编程序(asm)代码和Microsoft内联汇编程序(msasm)代码不能在同一翻译单元中一起使用
此选项允许使用C或C++文件中的汇编代码块和整个函数。 它允许Microsoft*MASM样式的内联汇编块而不是GNU*样式的内联汇编块
备选方案-fasm块
正如您所看到的,它只是-fasm块的别名。此外,尽管我不知道的命运,但请使用msasm
参考资料
将内联asm移出到单独的程序集源文件中并使用合适的汇编程序构建这些源文件有多困难?此外,您确实意识到没有什么可以阻止您将gcc编译的源文件与其他icc编译的源文件链接起来?@Paul:我不知道您是否理解这个问题。我不想组装…我只想读取组装文件,我不使用内联组装!我想用“-S”来查看汇编代码OK-这和你之前关于这个主题的问题是一样的吗?(看起来你删除了原来的问题?)。链接已失效,-usemsasm
标志不起作用either@LưuVĩnhPhúc链接恢复,它只是icc的手册页。您可能必须清除版本的发行说明才能跟踪更改。