首页 > 解决方案 > 将 c 代码与裸函数混合的替代方案

问题描述

所以目前 clang、msvc 和新的 llvm 支持的英特尔编译器不支持在裸函数中混合 c。

例子

__declspec(naked) void func()
{
     int j;
     _asm(add j, 1) 
}

我一直在使用的编译器支持这一点,但它已经被弃用了几年,转而支持 LLVM 替代方案。而且我想在出现兼容性问题之前换成新版本。

是否有另一种方法可以将 c 代码与程序集混合,而无需自动生成的序言/结语?由于我使用的库很大/很复杂,因此可以在纯汇编中完全重写。

编辑:这与一个裸函数(没有序言或结语)和编译器(MSVC、Clang、New Intel)不再支持在裸函数中与 asm 混合的 c 代码有关。如上例所示。这与建议的将程序集添加到项目无关。

标签: cassemblyx86-64inline-assembly

解决方案


推荐阅读