FEX allows you to run x86 applications on ARM64 Linux devices, similar to qemu-user and box64. It offers broad compatibility with both 32-bit and 64-bit binaries, and it can be used alongside Wine/Proton to play Windows games.

It supports forwarding API calls to host system libraries like OpenGL or Vulkan to reduce emulation overhead. An experimental code cache helps minimize in-game stuttering as much as possible. Furthermore, a per-app configuration system allows tweaking performance per game, e.g. by skipping costly memory model emulation. We also provide a user-friendly FEXConfig GUI to explore and change these settings.

On the technical side, FEX features an advanced binary recompiler that supports all modern extensions of the x86(-64) instruction set, including AVX/AVX2. The heart of this recompiler is a custom IR that allows us to generate more optimized code than a traditional splatter JIT. A comprehensive system call translation layer takes care of differences between the emulated and host operating systems and implements even niche features like seccomp. A modular core enables FEX to be used as a WoW64/ARM64EC backend in Wine.

Try it out

News

FEX 2506 Tagged

Welcome to the second half of the year! With this release we have some big changes to talk about, so let’s jump right in!

Read More

FEX 2505 Tagged

Well look who it is, another month and we have another release. This time around we have a smattering of fixes all over the place, including boring x87 quirks! Let’s get in to it!

Read More

FEX 2504 Tagged

Good weekend emulation and PC gaming enthusiasts! Another month has passed and we have implemented a decent number of features, optimizations, and bug fixes. A lot of good things we cooked up, so let’s jump right in to it!

Read More
Older Posts