我正在从源代码编译python扩展IGRAPH for x64,而不是在发行版中可用的x86。我已经得到这一切在2012 VS整理出来,当我注释掉在SRC/math.c如下它编译将内联ASM转换为内联for x64 igraph
#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
“fxtract”没有内部函数,因此计划立即失败。如果你愿意切换你的非长双精度,你可以用SSE2内在函数很容易地提取指数(顺便说一下,它比'fxtract'快很多)。 – harold