Wine
Wine Is Not an Emulator.
Ref: How Wine works 101
Why not an emulator
- Emulators are slow.
- No need: Windows and Linux on the same CPU run the same machine instructions.
Dynamic Loader
On Linux, the dynamic loader loads and runs an ELF:
bash
/lib64/ld-linux-x86-64.so.2 ./appWine is a "Windows dynamic library loader":
bash
wine64 HalfLife4.exeSyscall
Windows API calls are translated, e.g. when the app calls NtWriteFile(), Wine calls write() instead.
More
- wine-server: a process that holds the "kernel" state.
- Works with DirectX, audio APIs, ...
- A lot of work 😦