回答
在x86彙編中,沒有關於Power操作的指令,但是可以通過用對數表示Power來構建自己的例程來計算Power()。
以下兩個指令計算對數:
FYL2X ; Replace ST(1) with (ST(1) * log2 ST(0)) and pop the register stack.
FYL2XP1 ; Replace ST(1) with (ST(1) * log2(ST(0) + 1.0)) and pop the register stack.
有幾種方法來計算平方根:
(1)可以使用FPU指令
FSQRT ; Computes square root of ST(0) and stores the result in ST(0).
(2 )或者,您可以使用以下SSE/SSE2指令:
SQRTPD xmm1, xmm2/m128 ;Compute Square Roots of Packed Double-Precision Floating-Point Values
SQRTPS xmm1, xmm2/m128 ;Compute Square Roots of Packed Single-Precision Floating-Point Values
SQRTSS xmm1, xmm2/m128 ;Compute Square Root of Scalar Single-Precision Floating-Point Value
SQRTSD xmm1, xmm2/m128 ;Compute Square Root of Scalar Double-Precision Floating-Point Value
編寫一個簡單的幾行C程序,執行您感興趣的任務。將其編譯爲一個對象。反彙編該對象....看看彙編程序如何準備調用數學函數以及它如何調用數學函數,將反彙編的代碼段作爲彙編程序的出發點並從那裏開始。
現在,如果您正在談論一些沒有操作系統的嵌入式系統,問題不在於操作系統,而在於C /數學庫。那些函數庫或其他函數庫可能依賴於不合法的操作系統調用。理想情況下,雖然它是相同的確切機制,但通過設置正確的寄存器來準備函數調用,調用函數,使用結果。嵌入式時,當您嘗試將代碼與庫鏈接和/或嘗試執行時,會出現問題。
如果您要求如何在不使用離散指令的情況下使用預製庫的情況下重新創建此功能。這是一個完全不同的主題,尤其是如果您使用的處理器沒有這些說明。您可以通過查看庫的源代碼來了解這些功能,和/或對有問題的功能進行反彙編,但這可能並不明顯。尋找這本書或一本類似於「Hacker's Delight」的書,書中充滿了執行數學功能的東西,這些功能本來不受語言或處理器支持。
我反彙編了目標代碼,但我無法理解它。 這是一個龐大的代碼,我是編程新手,所以你能否給我一個更簡單的解決方案? – Pavitar 2010-08-29 07:56:53
- 1. Assembly IA32 $ 16,%esp
- 2. 如何從Assembly中調用C函數?
- 3. Java Square函數
- 4. 如何在Power BI中使用R包?
- 5. 如何在Square MockWebServer中使用SSL?
- 6. 在linux中調用CIO函數nasm assembly
- 7. MAgic Square函數C++
- 8. 如何在Power Query中使用M進行子查詢/ Power BI
- 9. 使用'power'的SAS函數/指數
- 10. 使用Assembly和C++調用函數兩次
- 11. 在Assembly文件中使用#defined'd函數/內聯函數的限制
- 12. 如何在python 2.7中使用e和power操作2.7
- 13. 如何在Obnam中使用'root ='?
- 14. Power Query M語言和Excel函數
- 15. masm assembly如何使用fpu分割和乘數字
- 16. wordpress調用root函數?
- 17. 訪問插件原型函數使用數組square [] brakets
- 18. 如何使用構造函數創建具有Root的Dojo樹
- 19. 如何在Orchard和System.IO.File方法中使用(root)相對路徑?
- 20. 如何在Excel 2013中啓用Power Map?
- 21. 如何在SharePoint 2013中啓用Power View?
- 22. 如何在xaml中編寫x2(x-square)
- 23. 從.bat文件調用Power shell函數
- 24. 如何通過從ember-power-select中選擇的函數
- 25. 如何在x86-64 Assembly中使用堆棧?
- 26. 在Assembly中讀寫數組?
- 27. 在Delphi中使用Assembly的好資源?
- 28. 在Assembly中使用堆棧查找數組中的數字8086
- 29. 如何在Windows Phone應用程序中使用F#Power Pack
- 30. 如何在Power BI中使用計算列中的瑕疵?
你想避免使用數學協處理器指令嗎? – 2010-08-25 05:50:39
我是初學者,所以我也很想知道,如果我可以使用一些指令,如C. – Pavitar 2010-08-25 05:53:09
中的math.h,您可以從程序集代碼中明確調用外部函數 - 或者您是否要求實現這些例程的程序集實現?你總是可以用C編寫它,看看編譯器提供了什麼。 – 2010-08-25 06:05:53