fpu

    1熱度

    1回答

    以下彙編代碼的結果是什麼? fld qword ptr [address2] fld qword ptr [address1] fldl2e fmulp ST(1),ST fld ST(0) frndint fxch ST(1) fsub ST,ST(1) f2xm1 fld1 faddp ST(1),ST fscale 在這裏,我不明白這段代碼在做什麼。我已經解釋是如下

    2熱度

    1回答

    我們都知道MIPS FPU有兩個精度單精度或雙精度。當我在指令集中查看它時,我發現對於相同的操作,單精度和雙精度的指令沒有區別。 例如,這裏從MIPS Architecture For Programmers Volume II:,指令ADD.fmt 無論是雙或單精度,操作數和功能碼都相同。解碼器如何知道它是單精度指令還是雙精度指令?或者5位fmt區域中的隱藏信息?我無法從谷歌找到任何好的答案,有

    -1熱度

    1回答

    採取下面的代碼段時: void calculate(int int_number) { __asm { fld1 mov eax, 5 fidiv eax ; A } } 如果我試圖編譯它,A線失敗,並error C2415: improper operand type。如果我用整數常量替換eax,會發生同樣的問題。然而,如果我通過in

    0熱度

    2回答

    我想將很多浮點數轉換爲多個精度的FPU,例如'0x4049000000 .....',執行計算,更改精度,然後再次執行計算等... 我知道理論爲here,但我想要一個軟件,在線工具或Matlab解決方案將6000+數字轉換爲FPU格式(如IEEE單精度)在0.0〜51.0範圍內。 有什麼建議嗎? 注:我需要自定義精度,我可以描述的位數和指數的數字。 EDIT:如所描述的here和here它也被稱爲

    3熱度

    1回答

    我很困惑。我對FLD m64fp指令有一些疑問,但我不知道從哪裏開始。因爲這是一項家庭作業,我不是特意要求答案,而是解決問題的方法。任何建議或想法,將不勝感激。 內存中的八個連續字節包含十六進制值01,00,00,00,00,00,00,00.FLD m64fp指令被執行。它的參數是這八個連續字節中第一個的地址。由於FLD指令的結果,在ST的值(0)現在是: 1) 2^(-1075) 2) 2^

    2熱度

    8回答

    我想了解點如何浮動轉換爲低電平進行處理。所以根據我的理解,這是用硬件實現的。因此,例如,SSE提供了一個浮子轉換爲int指令cvttss2si。 但我的問題是:浮點轉換是否總是這樣處理?在FPU和SSE的發明之前,使用匯編代碼手動完成的計算是什麼?

    1熱度

    1回答

    我想知道,應該使用什麼值來更改FPU舍入模式。 .data nearest: ?? down: ?? up: ?? zero: ?? .text .global round pushl %ebp movl %esp, %ebp movl 8(%ebp), %ecx cmpl $1, %ecx je

    1熱度

    1回答

    我有一對存儲在eax和ecx中的32位浮點數。我可以直接將它們加載到FPU中進行操作,而不必先存儲到內存中?這會顯着簡化一些編譯器代碼,但fld似乎只能在內存上運行。

    -2熱度

    1回答

    我必須在MIPS彙編中編寫一個程序,它將雙精度浮點數除以單精度數(使用標準IEEE 754),而不使用浮點指針單元。我唯一不能理解的是如何處理這兩個數字的尾數來計算分割。如何遍歷個別位? .data res: .asciiz "Result is: " neg_res:.asciiz "Result is: - " choice: .asciiz "\nMake your choice:\

    0熱度

    1回答

    我正在嘗試使用SSE和FPU進行並行計算的彙編函數。不幸的是,我收到了segmentation fault(core dumped)錯誤(在調試時它不顯示彙編函數)。我也不能從彙編函數中退出。 Gdb顯示: Warning: Cannot insert breakpoint 0. Cannot access memory at address 0x2bffff ret語句後。 我沒有任何想