2013-02-22 43 views
0

我有一個程序,只要用戶輸入Y(是),我就會循環。然後用戶輸入long float類型的數據。我還有一個計數器r14,每次輸入一個長浮點數就會計數。循環結束後,我想計算平均值。如果我這樣做:在裝配x86-64中劃分longfloat和int

fld tword [r14] 

並顯示它,虐待得到分段錯誤。我也嘗試了一些其他的東西,但它總是給我一個seg。嘗試分割和顯示後發生故障。我認爲問題在於r14是一個整數,我不能像這樣將它放入FPU堆棧並劃分。但我不能找出另一種方式。

有人可以幫忙嗎?提前致謝。

+0

[如何將整數轉換爲x86 ASM中的浮點值?](http://stackoverflow.com/questions/3027424/how-to-convert-an-integer-to-a-floating在x86-asm中的點值) – 2013-02-22 04:15:57

回答

0

FPU指令從存儲器或FPU寄存器中取出它們的參數,但不從通用CPU寄存器中取出它們的參數。

fld tword [r14]r14中包含的地址的內存位置開始執行tword,並將其壓入FPU堆棧頂部。

如果r14未指向可讀取10字節浮點值的內存位置,則會出現分段錯誤。

因此,將你的浮球儲存在內存中,並從那裏用fld來讀取它。

+0

我不太明白。在循環中我已經將fld加載到了float中。但它不會與櫃檯進行分工操作。有另一種方式,像fild,我應該加載? – vap 2013-02-22 06:53:02

+0

向我們展示您的代碼,而不僅僅是一條指令。 – 2013-02-22 07:16:57