通过 DLL 在 x64 上进行内联汇编
Inline assembly on x64 via a DLL
今天我在 MSDN 网站上看到,ARM 和 x64 处理器不支持内联汇编。由于我不擅长 C、C++ 或 ASM,我无法亲自测试它,但它激发了我的兴趣。
我想知道是否无法在 Visual Studio 中执行此操作,因为它位于 MSDN 网站上。
不管第一个问题的答案如何,我的第二个问题仍然存在:是否可以使用内联 ASM 编译 DLL,然后通过 x64 C/C++ 程序调用以执行内联 ASM .
如果是,为什么,如果不是:为什么不。
提前致谢!
根据 MSDN 的规定,VC++ 编译器 不支持这些平台上的内联汇编。当然,这不是这些平台的内在限制 - 它只是 VC++ 的那些版本中未实现的功能,其他编译器(例如 gcc)支持它就好了。没什么奇怪的,它不是标准功能(如:C 或 C++ 标准要求的功能),它只是一个通用扩展。
尽管如此,即使使用 VC++,您也不需要制作 dll - 您只需 assemble 将您的 asm 文件放入目标模块,然后 link 它与其他文件(例如由 C 或 C++ 编译器生成)一起放入单个可执行文件中。这实际上是他们推荐的混合 C/C++ 和程序集的过程 - Microsoft assembler 本身一如既往地与 VC++ 一起提供。
今天我在 MSDN 网站上看到,ARM 和 x64 处理器不支持内联汇编。由于我不擅长 C、C++ 或 ASM,我无法亲自测试它,但它激发了我的兴趣。
我想知道是否无法在 Visual Studio 中执行此操作,因为它位于 MSDN 网站上。
不管第一个问题的答案如何,我的第二个问题仍然存在:是否可以使用内联 ASM 编译 DLL,然后通过 x64 C/C++ 程序调用以执行内联 ASM . 如果是,为什么,如果不是:为什么不。
提前致谢!
根据 MSDN 的规定,VC++ 编译器 不支持这些平台上的内联汇编。当然,这不是这些平台的内在限制 - 它只是 VC++ 的那些版本中未实现的功能,其他编译器(例如 gcc)支持它就好了。没什么奇怪的,它不是标准功能(如:C 或 C++ 标准要求的功能),它只是一个通用扩展。
尽管如此,即使使用 VC++,您也不需要制作 dll - 您只需 assemble 将您的 asm 文件放入目标模块,然后 link 它与其他文件(例如由 C 或 C++ 编译器生成)一起放入单个可执行文件中。这实际上是他们推荐的混合 C/C++ 和程序集的过程 - Microsoft assembler 本身一如既往地与 VC++ 一起提供。