A fast usermode x86 and x86-64 emulator for Arm64 Linux
  • C++ 55.5%
  • Assembly 38.3%
  • C 3.8%
  • Python 1.2%
  • CMake 0.9%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
LC 73ab3bc56d
Merge pull request #5826 from cjacek/crt-printf
Windows/CRT: Add printf and puts stubs
2026-08-16 10:07:21 -04:00
.github CI: Disable ranges-v3 from trying to build native 2026-07-30 13:59:44 -07:00
CodeEmitter CodeEmitter: Fix ambigious ExtendedType declaration 2026-03-16 18:50:01 +01:00
Data toolchain_mingw: Don't use -static-libgcc -static-libstdc++ 2026-08-10 15:05:26 +02:00
docs Docs: Update for release FEX-2608 2026-08-04 16:55:43 -07:00
External Externals: Update fmt to 12.2.0 2026-07-21 09:32:23 -04:00
FEXCore SharedCodeBufferManager: Allocate JIT space atomically. 2026-08-13 14:58:01 -07:00
FEXHeaderUtils Filesystem: Fix Absolute() on Windows 2026-07-11 17:25:26 -04:00
Scripts Scripts: Fixes failure in doc_outline_generator 2026-08-04 17:11:10 -07:00
Source Windows/CRT: Add printf and puts stubs 2026-08-16 15:14:36 +02:00
ThunkLibs hunkgen: satisfy the clang 22 ComplierInstance VFS invariant. 2026-08-04 23:37:11 -07:00
unittests unittests/ASM: Ensure ffreep always has an operand 2026-08-09 16:46:13 +03:00
.clang-format Update .clang-format 2025-07-17 08:09:25 +02:00
.clang-format-ignore Enable automatic code formatting for X86Tables.h 2026-01-23 15:39:54 +01:00
.git-blame-ignore-revs Add previous commit to git blame ignore file 2026-01-23 15:40:53 +01:00
.gitignore gitignore: ignore CMakeLists.txt.user 2026-01-18 19:33:43 -05:00
.gitlab-ci.yml CI: Disable ranges-v3 from trying to build native 2026-07-30 13:59:44 -07:00
.gitmodules External: Remove jemalloc (jemalloc_glibc still exists) 2026-02-10 08:28:51 -08:00
AGENTS.md meta: Add CONTRIBUTING.md 2026-05-22 14:03:14 -07:00
CLAUDE.md meta: Add CONTRIBUTING.md 2026-05-22 14:03:14 -07:00
CMakeLists.txt CMake: Fix MINGW compilation under ArchLinux 2026-08-07 01:15:42 -03:00
CODE_OF_CONDUCT.md New domain. 2022-09-02 10:43:07 -07:00
CONTRIBUTING.md meta: Add CONTRIBUTING.md 2026-05-22 14:03:14 -07:00
LICENSE Initial Commit 2020-03-06 09:08:13 +02:00
Readme.md Readme.md: Mention Ubuntu 25.04 as supported 2025-07-26 00:38:26 +02:00

中文

FEX: Emulate x86 Programs on ARM64

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.

Prerequisites

FEX requires ARMv8.0+ hardware. It has been tested with the following Linux distributions, though others are likely to work as well:

  • Arch Linux
  • Fedora Linux
  • openSUSE
  • Ubuntu 22.04/24.04/24.10/25.04

An x86-64 RootFS is required and can be downloaded using our FEXRootFSFetcher tool for many distributions. For other distributions you will need to generate your own RootFS (our wiki page might help).

Quick Start

For Ubuntu 22.04, 24.04, 24.10 and 25.04

Execute the following command in the terminal to install FEX through a PPA.

curl --silent https://raw.githubusercontent.com/FEX-Emu/FEX/main/Scripts/InstallFEX.py | python3

This command will walk you through installing FEX through a PPA, and downloading a RootFS for use with FEX.

For other Distributions

Follow the guide on the official FEX-Emu Wiki here.

Navigating the Source

See the Source Outline for more information.