簡體   English   中英

是否可以安全地假設任何x86編譯的應用程序始終在x64版本下運行?

[英]Is it safe to assume that any x86 compiled app would always run under x64 edition?

是否可以安全地假設任何 x86編譯的應用程序始終在與該應用程序被編譯的同一操作系統的x64版本下運行

據我所知,對於Windows OS ,答案是“是” Windows x86仿真層是出於相同目的而構建的。 但是,我只想在這里與專家再次確認

UnixLinux呢? 有什么警告嗎?

否,要使x86代碼運行,必須在兼容或舊模式下運行。 如果操作系統不支持在兼容模式下運行進程,則該程序很可能無法運行。

Linux和IFAIK Windows當前支持兼容模式,並且看起來或多或少也有更多的支持。 我的理解是NETBSD需要一個特殊的模塊來支持此功能,因此不一定非要特別小心就可以支持它,這表明存在完全被這種可能性的OS存在的可能性很大。

然后此外,將來有可能破壞向后兼容性,這已經在CPU上發生,因為長模式不再提供虛擬x86模式,因為在64位Windows或Linux下您將無法再運行16位程序。

在操作系統方面也可能發生,開發人員可以決定不再支持兼容模式。 請注意,這也可能發生,因為可以通過先切換到傳統模式來支持虛擬x86模式,但是如果可能的話,似乎沒有人願意這樣做。 同樣,Windows或Linux開發人員似乎都沒有為在64位內核中以舊版模式運行內核代碼的實現可能性而煩惱。

前兩部分表明,可能並非總是有未來甚至現在的跡象。

此外,由於這是一個C ++問題,您還必須問自己一個問題,為什么要做出這樣的假設? 如果編寫得當,您的代碼應該可以在64位模式下編譯-因為您不依賴於特定寬度的數據類型,對嗎?

否。我們有一堆Debian服務器,它們缺少Multi-Arch i386(32位)庫。 在Windows Server Core上,WoW64(32位子系統)是可選的。 因此,對於Linux和Windows,都有已知的64位系統無法運行x86可執行文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM