Inf*_*or 7 c assembly x86-64 inline-assembly
所以目前 clang、msvc 和新的 llvm 支持的英特尔编译器不支持在裸函数中混合 c。
例子
__declspec(naked) void func()
{
int j;
_asm(add j, 1)
}
Run Code Online (Sandbox Code Playgroud)
我一直在使用的编译器支持这一点,但它已经被弃用了几年,转而支持 LLVM 替代方案。我想在出现兼容性问题之前切换到更新的版本。
在没有自动生成的序言/结语的情况下,是否有另一种方法可以将 c 代码与汇编混合?由于我使用的库很大/很复杂,因此无法在纯汇编中完全重写。
编辑:这与裸函数(没有序言或结语)和编译器(MSVC、Clang、新英特尔)不再支持在裸函数中与 asm 混合的 c 代码有关。如上例所示。这与建议的将程序集添加到项目无关。