这个帖子让我想到了前段时间看到的一篇关于 Wine 的文章([How Wine works 101](
https://werat.dev/blog/how-wine-works-101/),[中文译文](
https://www.freebuf.com/articles/system/346955.html))。实际上无论是什么操作系统,最终运行二进制文件都是 CPU 的工作,操作系统只是负责把二进制文件加载到 CPU 上去执行。而相同架构的 CPU 的指令又是一样的,所以理论上是可以把在 Windows 的编译的二进制文件移植到 Linux 上去的,
再看二进制文件,它其实是有结构的,可以简单理解成由 header 和 body 组成。header 部分是给操作系统来读取进行加载的,这部分不同的操作系统之间是有差别的。body 部分是 CPU 的指令,是真正要运行的部分,这部分的内容是和操作系统无关的。
所以可以这样理解,Wine 的主要工作是读取了二进制文件中的 body 部分,并加载到 CPU 运行。另外,它还 hook 了一些 Windows 上的系统函数,转成在的 Linux 里面的实现。
所以,理论上来说,用 Wine 运行 Windows 的程序,其性能并不会比在 Windows 中差,甚至有的时候还会更快。