我正在從源代碼編譯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