2009-08-18 51 views

回答

9

正确,它仍然不支持在VS 2010 Beta 1。我的猜测是,内联汇编太难以实现了:Microsoft实现它的方式,它与周围的C代码集成,以便数据可以流入和流出C代码,并自动注入适当的粘合代码。为此,C编译器实际上需要了解汇编代码;他们只是没有实现AMD64和Itanium。

+1

C编译器生成ASM作为中间件,没有什么让它在AMD64上允许内联ASM“困难”。平台规格是为什么内联ASM不支持x86中的x86_64目标的几个编译器中的原因。 – 2013-12-15 16:26:41

+0

@MarkKCowan:你见过* MSVC的内联ASM吗?它涉及到很多我做的事 - 我的意思是;您可以自由地将C/C++变量与汇编代码文本混合,因此编译器必须解析并(在某个级别上)分析所有代码,而不像GCC那样,汇编代码本身是以一种让人想起printf的样式指定的方式格式化字符串以及对输入,输出和破坏寄存器的显式描述,避免了编译器试图分析程序集的任何需求。说实话,我更喜欢海湾合作委员会的做法,因为它不涉及对编译器的第二次猜测。 – SamB 2016-02-13 18:02:39

+1

@SamB yep,与Delphi中的内联程序集相同。我只希望GCC没有使用AT&T的语法:( – 2016-02-13 18:09:43

3

这似乎是一个相当大的功能,以刚落...

这是很容易调用使用汇编编写的函数,只要你遵循Ç约定。 This tutorial解释如何。

+0

同意,唯一的真正的限制是你不能在同一个例程中混合使用C语言和ASM,从科学代码中常见的内联ASM混合的Pascal背景来看,我完全同意将语言分离为不同功能的决定。 – 2013-08-04 20:22:32