felix86 is a Linux userspace emulator that allows you to run x86 and x86-64 programs on RISC-V processors
Run the following command:
bash <(curl -s https://install.felix86.com)This command downloads and runs a script which installs felix86 and a rootfs of your choice.
Read the usage guide for more information.
If you are a developer, read the contributing guide.
Feel free to join our Discord server: https://discord.gg/TgBxgFwByU
- Just-in-Time (JIT) recompiler
- Uses the RISC-V Vector Extension for SSE instructions up to SSE 4.2
- Utilizes many standard extensions such as
B,Zicond,Zacasand others - Supports a variety of custom extensions
- Can use the host libraries in some cases for improved performance
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
We also use binary tests from other projects to verify correct behavior and prevent regressions.
You can find these tests here.
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