# fex-emu/fex

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/fex-emu-fex).**

6,896 stars · 251 forks · C++ · mit

## Links

- GitHub: https://github.com/FEX-Emu/FEX
- Homepage: https://fex-emu.com
- awesome-repositories: https://awesome-repositories.com/repository/fex-emu-fex.md

## Topics

`arm64` `cpp` `emulation` `emulator` `linux` `x86` `x86-64`

## Description

FEX is an emulator that executes 32-bit and 64-bit x86 binaries on ARM64 hardware. It functions as a binary translation framework that converts guest machine code into host instructions using a JIT compilation engine and a persistent code cache.

The project features a Vulkan graphics wrapper that translates OpenGL and Vulkan API calls to native host drivers, enabling cross-architecture graphics rendering. It includes a dedicated root filesystem manager for downloading, mounting, and switching between compressed filesystem images required for guest application environments.

The system provides comprehensive debugging and observability tools, including a remote GDB server, CPU state inspection, and the ability to capture and replay Vulkan graphics frames. Performance is managed through library call forwarding and a graphical interface for adjusting runtime configuration and memory models.

The emulator integrates with the host kernel binary format registration system, allowing emulated binaries to be launched directly from the host shell.

## Tags

### Operating Systems & Systems Programming

- [Dynamic Binary Translators](https://awesome-repositories.com/f/operating-systems-systems-programming/instruction-translation-accelerators/dynamic-binary-translators.md) — Provides a dynamic binary translation system to execute x86 machine code on ARM64 hardware at runtime.
- [x86 Binary Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/x86-binary-emulators.md) — Executes 32-bit and 64-bit x86 binaries on ARM64 hardware through dynamic binary translation.
- [Multi-Architecture Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/multi-architecture-support/multi-architecture-emulators.md) — Emulates x86 processor architectures to run diverse software and games on ARM64 hardware. ([source](https://cdn.jsdelivr.net/gh/fex-emu/fex@main/README.md))
- [Root Filesystem Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/root-filesystem-managers.md) — Includes a dedicated manager for downloading and mounting compressed root filesystem images for guest apps.
- [x86-on-ARM64 Emulation](https://awesome-repositories.com/f/operating-systems-systems-programming/x86-on-arm64-emulation.md) — Executes x86 binaries on ARM64 hardware by translating processor instructions.
- [CPU Register Inspection](https://awesome-repositories.com/f/operating-systems-systems-programming/cpu-register-inspection.md) — Enables inspection of CPU register state and disassembled code to identify causes of application crashes. ([source](https://wiki.fex-emu.com/index.php/Development:Debugging_Crash))
- [Kernel Binary Format Registration](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-binary-format-registration.md) — Integrates with the host kernel binary format registration system to launch emulated binaries directly from the shell.
- [Library Call Forwarding](https://awesome-repositories.com/f/operating-systems-systems-programming/library-call-forwarding.md) — Implements library call forwarding to route guest requests to host libraries for hardware acceleration. ([source](https://github.com/FEX-Emu/FEX/blob/main/docs/Readme_CN.md))
- [Root Filesystem Provisioning](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/host-guest-integration-tools/guest-operating-systems/guest-image-engineering/root-filesystem-provisioning.md) — Provides native root filesystems that allow guest programs to operate without isolation tools. ([source](https://github.com/FEX-Emu/FEX/blob/main/docs/Readme_CN.md))

### Data & Databases

- [Instruction Translation Caches](https://awesome-repositories.com/f/data-databases/in-memory-caches/instruction-translation-caches.md) — Utilizes a persistent code cache to store translated machine code and reduce execution stuttering.
- [Runtime Image Mounting](https://awesome-repositories.com/f/data-databases/persistent-storage-volumes/filesystem-mounts/runtime-image-mounting.md) — Provides a dedicated guest filesystem environment via mounted squashfs images to isolate dependencies. ([source](https://wiki.fex-emu.com/index.php/Development:Setting_up_FEX))

### Graphics & Multimedia

- [Graphics API Translation](https://awesome-repositories.com/f/graphics-multimedia/graphics-api-translation.md) — Translates OpenGL and Vulkan API calls to host drivers for cross-architecture graphics rendering.
- [Vulkan API Support](https://awesome-repositories.com/f/graphics-multimedia/vulkan-api-support.md) — Enables the execution of 32-bit and 64-bit binaries that utilize the Vulkan rendering API. ([source](https://wiki.fex-emu.com/index.php/Category:Vulkan_Render_API))

### Programming Languages & Runtimes

- [JIT Compilation Engines](https://awesome-repositories.com/f/programming-languages-runtimes/jit-compilation-engines.md) — Uses a JIT compilation engine with a persistent code cache to optimize guest code execution.
- [Performance Tuning](https://awesome-repositories.com/f/programming-languages-runtimes/jit-compilation-engines/performance-tuning.md) — Optimizes execution speed through tunable memory models, code caching, and JIT annotations.

### Development Tools & Productivity

- [Remote Debugging](https://awesome-repositories.com/f/development-tools-productivity/application-debugging/remote-debugging.md) — Attaches a remote GDB server to running processes to retrieve backtraces and monitor execution. ([source](https://wiki.fex-emu.com/index.php/Development:Debugging_Crash))
- [Emulated Application Debugging](https://awesome-repositories.com/f/development-tools-productivity/emulated-application-debugging.md) — Provides comprehensive tools for analyzing crashes and inspecting CPU state in emulated processes.
- [Emulated Process Debugging](https://awesome-repositories.com/f/development-tools-productivity/emulated-process-debugging.md) — Analyzes application crashes and system signals to identify failures within the emulated environment. ([source](https://wiki.fex-emu.com/index.php))
- [Performance Tuning Utilities](https://awesome-repositories.com/f/development-tools-productivity/performance-tuning-utilities.md) — Utilizes a code cache and tunable memory models per application to improve execution speed. ([source](https://cdn.jsdelivr.net/gh/fex-emu/fex@main/README.md))

### DevOps & Infrastructure

- [RootFS Image Managers](https://awesome-repositories.com/f/devops-infrastructure/layered-filesystems/rootfs-manipulators/rootfs-image-managers.md) — Provides a utility to download, mount, and manage compressed filesystem images for guest applications.

### Security & Cryptography

- [Binary Execution Automation](https://awesome-repositories.com/f/security-cryptography/binary-execution-automation.md) — Automates the execution of x86 binaries by registering the emulator with the host kernel. ([source](https://github.com/FEX-Emu/FEX/blob/main/docs/Readme_CN.md))

### Software Engineering & Architecture

- [Graphics Call Interceptors](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/dynamic-library-loaders/graphics-call-interceptors.md) — Passes graphics and system calls directly to host libraries to minimize emulation lag. ([source](https://cdn.jsdelivr.net/gh/fex-emu/fex@main/README.md))
- [Library Call Forwarding](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/dynamic-library-loaders/library-call-forwarding.md) — Redirects guest library requests to native host libraries for hardware acceleration of graphics and system tasks. ([source](https://wiki.fex-emu.com/index.php/Development:Setting_up_Library_Forwarding))
