2013-08-03 61 views
0

運行時如何在x86彙編程序中使用單精度浮點數。我知道你可以在編譯時使用.float彙編程序僞指令來包含靜態浮點數,但是如何處理用戶輸入基數爲10的浮點數並在代碼中使用它。如何在運行時動態計算浮點數x86彙編程序

我做了一些讀過去的2天,轉換基地10浮動指數和massisia有意義,但我真的不得不編碼一個函數來轉換它們來回使用它們與floaters(浮點運算符,如fadd,fdiv)。

如果是這樣我想我必須把它吸起來,並創建兩個函數來回從十進制到指數massisia十六進制。

如果不是有操作或指示,爲我做這個?如果是的話,他們是什麼,或者如果你可以將我鏈接到他們的文檔頁面。

感謝您的時間,並希望這篇文章有意義。

+0

可以使用像'gcvt()'和'atof()'這樣的運行時庫轉換函數嗎? – wallyk

+0

我和一位朋友一直在研究這個做我們的自我,並避免其他功能。他們很可能會用在我們的最終應用程序中,但是我們正在嘗試學習如何在使用其他功能之前如何做到這一點...爲了學習的目的 –

+0

@randynewfield我大家都贊成通過做 - 我剛剛編寫了一個鏈接列表合併排序,用於編程語言實踐。不過,我不確定二進制浮點數是十進制<->是不錯的選擇。 –

回答

2

許多C編譯器,包括gcc,都可以選擇生成彙編語言。雖然不容易,但用C編寫這種類型的代碼並使用編譯器來獲得彙編語言並不難,您可以根據需要進行調整。

小心非規格化數字和帶符號的零。他們可能需要特殊處理。

您可以像彙編語言一樣至少在C中學習所涉及的方法。在彙編語言中,由於所有雜亂的細節,很難看到大局。除非你完全沒有別的選擇,否則我不會直接用匯編語言寫這樣的東西。

1

如果您正在討論用戶輸入 - 那麼答案很清楚。用戶不能輸入浮點數。用戶總是輸入字符串。 (甚至更確切地說 - 用戶總是輸入按鍵,但無論如何,任何體面的操作系統都會將它們轉換爲字符串)

因此,您總是必須將字符串轉換爲數字 - 整數,浮點數或任何其他格式。

大多數高級語言都會使此轉換調用變爲透明,但在彙編語言中,您必須明確地進行這些轉換。

這是另一種說法,您可以使用哪種轉換功能。這取決於你的目標和運行環境。你可以自己寫這些函數。或者使用由標準C或任何其他語言功能提供的這些。或使用OS提供的庫。