![wine 是一个模拟器还是兼容层?](https://linux22.com/image/1092722/wine%20%E6%98%AF%E4%B8%80%E4%B8%AA%E6%A8%A1%E6%8B%9F%E5%99%A8%E8%BF%98%E6%98%AF%E5%85%BC%E5%AE%B9%E5%B1%82%EF%BC%9F.png)
昨天,我和一位朋友(Windows 用户)进行了激烈的讨论。他说 Wine 只是一个模拟器。我说 Wine 不是模拟器,应该读作“Wine 不是模拟器”。然后他给了我很多链接,包括 WineHQ 的维基页面那里写着“Wine 不是那种模拟器”。
所以我想问一下,如果 Wine 是一个模拟器,为什么它称自己为“Wine 不是模拟器”?
答案1
Windows 中的程序大量使用属于 Microsoft Windows 的标准库。这些库在 Wine 中被重写和实现,因此它们的作用大致相同。程序编写得越好,标准库越多,程序在 Wine 中运行的可能性就越大。
首先检查程序代码是否调用 Windows 库。这些调用被翻译,以便 Wine 的库被调用。然后程序代码全速执行。没有模拟代码,只有对库的调用被翻译。
因此,从理论上讲,程序的运行速度应该与 Microsoft Windows 一样快。实际上,程序可能会更慢,因为需要进行翻译。但是,程序的运行速度有可能更快,因为 Wine 的库更简单,并且 Linux 中的磁盘访问通常更快。
由于 Linux 使用 OpenGL,因此使用 OpenGL 的 Windows 程序通常可以在 Wine 中很好地运行。Linux 不使用 DirectX - 但是,DirectX 游戏可以在 Wine 中运行,因为 DirectX 调用可以通过 Wine 转换为 OpenGL 调用。
答案2
从与您指向的同一链接“Wine 不进行任何 CPU 模拟”这就是模拟器通常所做的(wii、psx、n64 等)
为了获得更完整的答案,您可以阅读您提供的链接的第一段 - 我认为没有人可以以更好的方式解释它。