felix86 is a Linux userspace emulator that allows you to run x86 and x86-64 programs on RISC-V processors
Run the following command:
curl -s https://raw.githubusercontent.com/OFFTKP/felix86/master/src/felix86/tools/install.sh -o /tmp/felix86_install.sh && bash /tmp/felix86_install.sh && rm /tmp/felix86_install.sh
This command downloads and runs the installer script, which fetches the latest felix86 artifact and lets you either download a rootfs or use your own.
Read the usage guide for more information.
If you are a developer, read the contributing guide.
- Just-in-Time (JIT) recompiler
- Uses the RISC-V Vector Extension for SSE instructions
- Utilizes the B extension, if available, for bit manipulation instructions like
bsr
- Supports a variety of optional extensions, such as XThead custom extensions
- Can use the host libraries in some cases for improved performance
felix86 is in the early stages of development.
A compatibility list can be found here: https://felix86.com/compat
felix86 relies on several great projects:
- FEX's comprehensive unit test suite
- Biscuit for RISC-V code emission
- Zydis for decoding and disassembly
- Catch2 for unit testing
- fmt for string formatting
- nlohmann/json for JSON parsing
- toml11 for TOML parsing
felix86 was started for several reasons, including:
- Gaining a deeper understanding of x86-64, RISC-V, Linux, and high-level emulation
- Exploring optimizing compilers and JITs (SSA, register allocation, optimization passes, etc.)
- To learn more about low level details, such as signals, syscalls, program loading
- Taking on a fun and challenging project
- Panda3DS, a 3DS emulator for Windows, macOS, Linux, and Android
- shadPS4, one of the leading PS4 emulators
- ChonkyStation3, experimental HLE PS3 emulator for Windows, MacOS and Linux