如果我們在64位機器上運行32位二進制,會有什麼影響?如果機器具有超過4 GB的RAM,它會有什麼影響(系統中的RAM是8GB)?在64位機器上運行32位二進制
回答
當運行在64位計算機的32位二進制文件(假設OS是在64位模式運行),您有以下限制:
- 二元不能充分利用64位運算指令。這可能會降低性能。
- 該二進制文件無法尋址超過4GB的虛擬內存。
但是,這些4GB可以位於8GB內存中的任何位置。因此,如果您運行的是多個32位應用程序,每個應用程序使用少於4GB,則可充分利用所有8GB內存。
請注意,由於各種限制,您的應用程序實際上可能只能分配2GB的虛擬內存。
點號。 1(二進制不能利用64位算術指令)對於至少兩個平臺是錯誤的。 (sparcv9-linux/solaris和[x32 - * - linux](http://en.wikipedia.org/wiki/X32_ABI)) – 2012-03-29 08:25:56
在x64上,32位二進制文件無法訪問[通用寄存器]的高32位(http://en.wikipedia.org/wiki/X64#Operating_modes)。因此,當添加兩個64位數字時,一個32位二進制必須發出兩條指令而不是一條指令。 @jørgensen – user1202136 2012-03-29 08:40:48
x86-64增加了更多的東西:更多的寄存器,PIC相對尋址,使用寄存器進行函數調用的更精確的ABI,通常導致性能改進,這些偏移大大抵消了使用更大(更不緩存不友好)類型。在其他平臺(sparc64 vs sparc?mips64 vs mips?)從32位到64位可能實際上會降低性能。 – ninjalj 2012-03-29 10:38:08
- 1. 32位內核如何運行64位二進制文件?
- 2. 在64位機器上生成32位
- 3. 在64位linux armv8機器上編譯32位二進制時遇到問題
- 4. Microsoft SharePoint的64位DLL正在32位機器上運行
- 5. 防止在64位機器上運行32位安裝項目
- 6. 在64位機器上運行32位.NET應用程序
- 7. 在java中的64位機器上運行32位dll
- 8. 我可以在32位機器上運行64位dll嗎?
- 9. 64位在32位機器上運行的組件COM +導出
- 10. 32位代碼在64位Linux機器上運行
- 11. 如何在64位linux機器上運行32位matlab?
- 12. 在32位或64位matlab上運行?
- 13. gcc:在32位平臺上編譯64位二進制文件
- 14. 在64位系統上編譯32位二進制
- 15. 在64位CentOS上爲ARM構建32位二進制文件
- 16. 什麼告訴32位GCC在64位系統上,使64位二進制
- 17. 如何運行64位機器上的32位API?
- 18. ASP.NET 32位機器現在編譯試圖在64位機器上運行
- 19. 64位JVM上運行的Eclipse 32位
- 20. 在32位操作系統上運行二進制文件以在64位操作系統上運行
- 21. 32位/ 64位系統上的二進制文件?
- 22. 在64位機器上限制芯片32位
- 23. 64位機器上的SQL Server 2012 32位或64位?
- 24. 爲什麼我的PowerShell主機在64位機器上以32位運行?
- 25. 在64位機器上以32位模式運行Oracle客戶機
- 26. 在32位機器上進行64位進程的遠程調試
- 27. 需要在32位長的機器上執行64位乘法
- 28. 如何在16位二進制,32位二進制和64位二進制中編寫整數值「60」
- 29. 使用NSIS在64位服務器上運行32位java keytool
- 30. 32或64位機器
答案「否」就足夠了嗎? – Mehrdad 2012-03-29 07:53:09
如果通過影響你的意思是積極的影響,那麼在某種程度上:更多的RAM意味着更多的磁盤緩存... – dbrank0 2012-03-29 08:23:41