葡萄酒項目開發商 Stefan Dösinger 和 André Hentschel 宣布推出 Hangover 模擬器的第一個公開版本, 這 允許您運行 32 位和 64 位 Windows 應用程序 專為 x86 和 x86_64 架構設計 在基於 ARM64 架構(Aarch64)的 Linux 和 Android 環境中。
與在系統調用級別的模擬模式下使用 QEMU(使用與主系統相同的內核)在最小系統環境下運行 Wine 不同。
關於宿醉模擬器
該項目 Hangover 可以讓用戶獲得顯著更高的性能。 該項目的加速推進 是通過將仿真層轉移到Win32/Win64 API級別來實現的, 而不是使用基於它們的後續 Win32/Win64 API 模擬來模擬常規系統調用。
目前,該項目僅允許用戶運行使用 Win64 和 Win32 API 的簡單應用程序和遊戲。
對於 Linux,已經實現了對 Direct3D 的支持,但由於 Wine 中對 OpenGL ES 的支持不完整,因此尚未在 Android 上實現。
不存在調試器支持,並且異常處理存在已知錯誤。 由於這些原因,版權保護和反作弊系統的狀況可能比普通版本的 Wine 更糟糕。
一般來說,64 位應用程序的性能比 32 位應用程序要好,因為不需要數據結構。
為了確保工作,使用常規的 Wine 安裝,並輔以各種庫和 DLL 層。
在 Linux 環境中,當 QEMU 位於 Wine 目錄(“C:\ x86\ qemu-x86_64.exe.so”)中時,Windows 應用程序會自動運行。
而在Android中,建議使用cmd實用程序來執行執行。
通過保留低於 4 GB 的每個地址,地址空間限制為 4 GB。
大多數 Wine 的核心庫都預加載到 4 GB 以上 盡可能將上述空間保持在 4 GB 以下。 這樣做的缺點是啟動一個新進程大約需要 2 秒。
ARM64 的宿醉酒
Wine 將每個進程視為 64 位進程,因此其 WoW64 層不處於活動狀態。。 這對於純 32 位或純 64 位應用程序來說效果很好,但對於需要區分 C:\windows\system32 和 C:\windows\syswow64 的混合應用程序來說會出現問題。
關於32位(x86)Windows應用程序的發布, 在應用程序和 Wine 之間傳遞的結構的翻譯級別進行處理 (Windows 上的 LLP64 模型保留了 32 位和 64 位 WinAPI 之間的基本框架兼容性。)
為了運行 32 位 Windows 應用程序,需要使用 64 位 Wine 程序集,並且每個進程首先被視為 64 位。
在主機端,僅支持 ARM64 和 x86_64 架構,但代碼是統一的,允許項目按照從最新到最舊(little-endian)的字節順序移植到其他架構,而不需要太多努力。
還有很多需要打磨的地方
迄今為止,Hangover 的表現還有很多不足之處。 因為它是主要瓶頸是 QEMU 生成的代碼的性能。
黃大仙禁運, 在 Nvidia Shield Android TV 設備上運行時。 性能足以運行 2000 年代以後的遊戲。
在 Hangover 上測試的應用程序包括 Notepad++、ANNO 1602、奇蹟時代、戰鎚 40k:戰爭黎明、工人物語 II 10 週年、波斯王子 3D、百戰天虫 2 和百戰天虫世界末日。 DirectX 9 SDK 示例也以可接受的速度運行。
該版本基於 Wine 4.0 代碼庫,這反映在 Hangover 0.4.0 版本號中。 仿真層基於QEMU項目。