https://github.com/offtkp/felix86
Run x86 and x86-64 games on RISC-V Linux
https://github.com/offtkp/felix86
cpp emulator linux risc-v x86 x86-64
Last synced: about 9 hours ago
JSON representation
Run x86 and x86-64 games on RISC-V Linux
- Host: GitHub
- URL: https://github.com/offtkp/felix86
- Owner: OFFTKP
- License: mit
- Created: 2024-06-26T16:22:34.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-10-04T20:47:22.000Z (4 months ago)
- Last Synced: 2025-10-04T22:24:21.741Z (4 months ago)
- Topics: cpp, emulator, linux, risc-v, x86, x86-64
- Language: C++
- Homepage: https://felix86.com
- Size: 23.1 MB
- Stars: 489
- Watchers: 7
- Forks: 16
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- Funding: FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
[中文](./README_CN.md) | [Website](https://felix86.com) | **[Discord](https://discord.gg/TgBxgFwByU)**
# felix86
felix86 is a Linux userspace emulator that allows you to run x86 and x86-64 programs on RISC-V processors
## Getting started
### Ubuntu/Debian/Bianbu and maybe others
Run the following command:
```bash
bash <(curl -s https://install.felix86.com)
```
This command downloads and runs a script which installs felix86 and a rootfs of your choice.
Documentation for developers and users can be found here: https://felix86.com/docs
Feel free to join our **Discord server**: [https://discord.gg/TgBxgFwByU](https://discord.gg/TgBxgFwByU)
## Features
- 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`, `Zacas` and others
- Supports a variety of custom extensions
- Can use the host libraries in some cases for improved performance
## Compatibility
A compatibility list can be found here: https://felix86.com/compat
## Dependencies
felix86 relies on several great projects:
- [FEX](https://github.com/FEX-Emu/FEX)'s comprehensive unit test suite
- [Biscuit](https://github.com/lioncash/biscuit) for RISC-V code emission
- [Zydis](https://github.com/zyantific/zydis) for decoding and disassembly
- [Catch2](https://github.com/catchorg/Catch2) for unit testing
- [fmt](https://github.com/fmtlib/fmt) for string formatting
- [nlohmann/json](https://github.com/nlohmann/json) for JSON parsing
- [toml11](https://github.com/ToruNiina/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.](https://github.com/felix86-emu/binary_tests)
## Why?
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
## Also Check Out
- [Panda3DS](https://github.com/wheremyfoodat/Panda3DS), a 3DS emulator for Windows, macOS, Linux, and Android
- [shadPS4](https://github.com/shadps4-emu/shadPS4), one of the leading PS4 emulators
- [ChonkyStation3](https://github.com/liuk7071/ChonkyStation3), experimental HLE PS3 emulator for Windows, MacOS and Linux