小编Inf*_*or 的帖子

将 c 代码与裸函数混合的替代方法

所以目前 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 代码有关。如上例所示。这与建议的将程序集添加到项目无关。

c assembly x86-64 inline-assembly

7
推荐指数
0
解决办法
126
查看次数

标签 统计

assembly ×1

c ×1

inline-assembly ×1

x86-64 ×1