我正在从源代码编译 python 扩展 IGRAPH for x64 而不是发行版中可用的 x86。我已经在 VS 2012 中对它进行了整理,当我在 src/math.c 中注释如下时它会编译
#ifndef HAVE_LOGBL
long double igraph_logbl(long double x) {
long double res;
/**#if defined(_MSC_VER)
__asm { fld [x] }
__asm { fxtract }
__asm { fstp st }
__asm { fistp [res] }
#else
__asm__ ("fxtract\n\t"
"fstp %%st" : "=t" (res) : "0" (x));
#endif*/
return res;
}
#endif
问题是我不太了解 asm,我也不太了解从 x86 到 x64 是否存在问题。据我所见,这是 4 个必须转换为 x64 内在函数的汇编指令的简短片段。
任何指针?走向内在是正确的方式吗?或者它应该是子程序还是纯C?
编辑:如果有人想查看 igraph 扩展链接http://igraph.sourceforge.net/download.html