我試圖將在Linux下編寫的C代碼(fedora 9)轉換爲程序集x86代碼,但是,我在Math.h函數中遇到了問題。該庫中的函數,如ceil,floor,log,log10,pow在程序集x86中未定義。你能幫我解決這個問題嗎?彙編x86中的Math.h庫函數?
謝謝。
我試圖將在Linux下編寫的C代碼(fedora 9)轉換爲程序集x86代碼,但是,我在Math.h函數中遇到了問題。該庫中的函數,如ceil,floor,log,log10,pow在程序集x86中未定義。你能幫我解決這個問題嗎?彙編x86中的Math.h庫函數?
謝謝。
大多數庫函數都不會用匯編語言來定義,至少不是直接映射到ADD
指令的加法運算符。如果你想在彙編中重新編寫庫,你必須使用處理器可用的任何功能來實現該功能。大多數庫函數都需要一個單獨的彙編語言子程序,而不僅僅是一個單獨的操作。解決這個問題的最簡單方法是讓單獨的庫子例程獨立工作,然後將它們合併到更大的程序中。
您可以編譯C代碼並檢查反彙編的輸出,但要注意編譯器優化,這可以使輸出難以讓人遵循。
請問這個任務背後的目的是什麼?由於編譯器本質上是一個C語言到彙編語言的翻譯器,因此很少需要手動完成此操作。這是功課嗎?
我解決了這個問題,通過在編譯代碼時向gcc添加-lm:gcc -lm -o executable_name file_name.s – hamb