felix86 is a Linux userspace emulator. It allows you to run x86-64 Linux programs on RISC-V processors. Early in development.
Compilation and usage instructions can be found here.
Want to contribute but don't know what to do? Check this out.
- Just-in-Time recompiler
- Uses RISC-V Vector Extension for SSE instructions
- Utilizes B extension if available for bit manipulation instructions like
bsr
- Support for a variety of optional extensions such as XThead custom extensions
felix86 is very early in development, and will not support AArch64.
At the moment, felix86 can run some console-based applications such as python3
or lua
.
If you want a more mature x86-64 userspace emulator, use one of these:
- FEX, for x86 & x86-64 on AArch64
- box64, for x86 & x86-64 on AArch64 and RISC-V
- qemu-user, for basically everything on everything
felix86 depends on a bunch of great projects:
- FEX's incredible unit test suite & rootfs generation
- Biscuit for RISC-V emitting
- Zydis for decoding/disassembly
- Catch2 for unit testing
- fmt for string formatting
- nlohmann/json for json parsing
felix86 was started for several reasons, but to name a few:
- Learning more about x86-64, RISC-V, Linux, high-level emulation
- Learning about optimizing compilers, JITs (SSA, RA, optimization passes, ...)
- Learning more about different memory models and low level details
- Fun challenge