嘿我試圖學習如何在我的C程序中編寫彙編代碼。我理解裝配中的整數,但花車繼續讓我絆倒。C行內彙編 - 'fst'的操作數類型不匹配
double asmSqrt(double x) {
double o;
__asm__ ("fld %1;"
"fsqrt;"
"fst %0;"
: "=g" (o)
: "g" (x)
);
return o;
}
正如你可以看到我只是想找到x的平方根。但是每當我嘗試編譯它時,我都會遇到操作數類型不匹配錯誤。
我跟着這裏所使用的相同的語法:http://www.codeproject.com/KB/cpp/edujini_inline_asm.aspx?display=Print
PS:在Windows XP
是否主叫Windows上的約定返回寄存器ST0或FP0中的浮點數? – rsaxvc 2012-01-05 02:14:27
你的編譯器標誌是什麼? – rsaxvc 2012-01-05 04:33:28
我認爲會不必要地衝回棧,以避免你需要實現返回。沖刷到堆棧還可以將精度降低到64位雙精度而不是80位x87。 (如果你正在爲速度做這件事,則需要更多;如果是學習,卡爾的答案爲我解決了這個問題)。 – rsaxvc 2012-01-05 05:11:45