【发布时间】:2017-05-03 15:35:43
【问题描述】:
我知道 x64 模式下的 MSVC 编译器不支持代码的内联汇编 sn-ps,为了使用汇编代码,您必须在一些外部 my_asm_funcs.asm 文件中定义函数:
my_asm_func PROC
mov rax, rcx
ret
my_asm_func ENDP
然后在您的 .c 或 .h 文件中为函数定义一个头文件,如下所示:
int my_asm_func(int x);
虽然该解决方案解决了许多问题,但我仍然有兴趣使该汇编代码函数内联,换句话说 - 编译后我不希望对 my_asm_func 有任何“调用”,我只想将这段程序集粘合到我最终编译的代码中。我尝试使用 inline 和 __forceinline 关键字声明该函数,但似乎没有任何帮助。还有什么方法可以做我想做的事吗?
【问题讨论】:
-
你搜索过编译器内部函数吗?这可能是机会,有一些东西,涵盖了
my_asm_func的功能。通常,将您自己的程序集内联与进行大量优化(取决于优化级别)的编译器混合起来可能很难工作,更不用说它的维护了。 -
不,不可能。出于某些原因,请参阅此answer to a similar question。
标签: c visual-studio x86-64 masm