一直用的 Ubuntu1804 网页版微信也不能用 今天折腾了一下 wine 可以在 Ubuntu 使用 Windows 微信客户端 好他娘神奇啊 这是怎么实现的啊?个人技术水平有限,有咩有懂哥科普一哈。
1
forcecharlie 2020-11-26 17:35:31 +08:00
Wine 通常要做到加载 PE 格式可执行文件到内存让其执行,提供 Windows 系统调用供其于系统交互。相同的 CPU 指令集就无需指令翻译了,否则还还涉及到指令集的翻译。
|
2
neoblackcap 2020-11-26 17:54:53 +08:00
wine 会重新实现对应 windows 的 win32 api,并能加载 PE 格式的可执行文件,就是这么简单无华但枯燥乏味的原理
|
3
cheng6563 2020-11-26 17:54:59 +08:00
模拟了 Windows 的 API,和 WSL1 一个原理
|
4
billlee 2020-11-26 21:26:46 +08:00
|
5
outponder 2020-11-26 21:38:31 +08:00 via Android
@cheng6563 但是为什么能这么强,有些游戏用 vulkan 重写 dx 的 api 在 linux 性能强过 win
|
6
Xusually 2020-11-26 21:50:21 +08:00
Wine Is Not an Emulator
想到这个就是一个字“秀” |
7
Macv1994 OP @neoblackcap 对我来说 很神奇了 没有深入研究过操作系统层面的知识 唉 太菜了我
|
8
neoblackcap 2020-11-27 03:19:27 +08:00
@outponder 跟“API”没有多大关系,跟“重写”很大关系。
稳定的软件,用原来的技术栈重写一样能获得性能提升,实际上不就是调优嘛。 DX12,vulkan,mantle 都是一个技术源头——xbox 360 研发过程。 |
9
way2explore2 2020-11-27 05:19:25 +08:00 1
酵母+糖(多是葡萄)+时间。
有时候还需要木桶。 |
10
no1xsyzy 2020-11-27 10:04:23 +08:00
@way2explore2 主要需要无氧环境
似乎葡萄才能出 wine,苹果出 cider,麦芽出 ale…… 之类的,英文环境下会用不同单词区分不同原料的产物 |
11
TransAM 2020-11-27 12:45:32 +08:00 via Android
由于指令集一样,你需要:
( 1 )将 linux api 封装成 windows api ( 2 )将 pe 适配成 elf |
13
Macv1994 OP @way2explore2 搁着教我酱酒呢🐶🐶
|
14
dyv9 2020-11-28 09:29:03 +08:00 via Android
@neoblackcap 你选择理科的原因大概是语文勉强及格,朴实无华“但”枯燥乏味。😁
|