大多數編譯器如何在32位環境中對64位操作數(例如long int)執行操作?換句話說,是否有辦法在單個步驟中實現這些操作,或者我們需要訪問多個內存位置來實現這些操作?32位體系結構中的64位操作數的操作?
5
A
回答
5
它們使用兩個寄存器來保存一個64位值。一個用於較低的32位,另一個用於高32位。
對於x86,64位加法/減法是用做附加有進位加減法,與借款說明:
add %eax, (lower 32-bits of operand)
adc %edx, (upper 32-bits of operand)
64位乘法要複雜得多,但使用也做32位乘法和32位帶附加指令的組合。 (類似於2位長乘法)
對於加載和存儲,是的,需要將兩個32位值加載到/從兩個寄存器存儲/存儲。
類似地,可以在64位硬件上實現128位整數。 GCC支持這個擴展。
+0
32位(x86)硬件上的128位整數是什麼? – 2011-10-15 23:17:23
+1
它變得醜陋。在這一點上它與多精度算術沒什麼兩樣。另外,你會鏈接3'adc'指令。 (不要忘記你對進位標誌有依賴性,可能會導致你的流水線癱瘓)。對於乘法運算,你必須做16×32位乘法和一堆'add'和'adc'。 ..我不知道任何支持這一點的編譯器。 – Mysticial
相關問題
- 1. 32位/ 64位操作系統?
- 2. 什麼數據類型是32位操作系統中的16位和64位操作系統中的32位?
- 3. Windows 64位操作系統上的32位或64位Android SDK?
- 4. 在64位架構上的32位操作系統
- 5. Windows結構化存儲 - 32位與64位COM互操作
- 6. 如何檢測Flex中的32位或64位操作系統?
- 7. 對32位系統中的64位字進行操作
- 8. 32位系統中的32位和64位之間的操作(sint/uint)
- 9. 確定從32位操作系統或64位操作系統C/C++應用
- 10. 64位操作系統上的32位ActiveX DLL的問題
- 11. 關於64位和32位的Mac操作系統
- 12. 安裝在64位操作系統上的Windows 32位Eclipse?
- 13. 64位操作系統上的32位VC++可再發行?
- 14. VM Virtual Box 64位硬件上的32位操作系統
- 15. 32位應用程序的64位操作系統
- 16. 32位和64位操作系統上的Java版本
- 17. 對32位和64位操作系統的不同計算
- 18. 在32位操作系統中使用64位dll
- 19. 。用於在64位操作系統上運行的32位應用程序的.net框架體系結構
- 20. 64位操作系統上的32位或64位應用程序?
- 21. Linux中的do_div()在32位和64位體系結構中工作嗎?
- 22. 模塊化計算32位與64位操作系統
- 23. 32位DLL不能在64位操作系統
- 24. 使用arm v8運行32位和64位操作系統
- 25. 32位dll 64位操作系統與regsvr32.exe
- 26. JNA在64位操作系統上具有32位JVM
- 27. 32位OpenCL SDK和64位操作系統錯誤
- 28. 在64位操作系統上調試32位CASSINI(Oracle 9)
- 29. 在64位操作系統上啓動32位進程
- 30. 64位操作系統與32位MS辦公室問題
或多個寄存器而不是 –