今天我在MSDN网站上看到,ARM和x64处理器不支持内联汇编。由于我不擅长C,C ++或ASM,我无法自己测试,但这引起了我的兴趣。
我想知道在Visual Studio中是否不可能这样做,因为它在MSDN网站上。
无论第一个问题的答案如何,我的第二个问题仍然存在:是否可以使用内联ASM编译DLL,然后通过x64 C / C ++程序调用该DLL以执行内联ASM。 如果是这样,为什么,如果不是,为什么不呢。
提前致谢!
答案 0 :(得分:2)
根据MSDN的规定, VC ++编译器不支持在这些平台上进行内联汇编。当然,它不是这些平台的固有限制 - 它只是VC ++那些版本中没有实现的功能,其他编译器(例如gcc)支持它就好了。没有什么比这更奇怪了,它不是标准功能(如:C或C ++标准所要求的功能),它只是一个常见的扩展。
尽管如此,即使使用VC ++,您也不需要创建一个dll - 您可以将asm文件组装到一个目标模块中,并将其与其他模块链接在一起(例如由C生成)或者C ++编译器)成一个可执行文件。这实际上是他们推荐的混合C / C ++和汇编的程序 - 微软汇编程序本身随着VC ++一起随附。