Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/offtkp/felix86
An x86-64 emulator for RISC-V Linux
https://github.com/offtkp/felix86
cpp emulator linux risc-v x86-64
Last synced: 1 day ago
JSON representation
An x86-64 emulator for RISC-V Linux
- Host: GitHub
- URL: https://github.com/offtkp/felix86
- Owner: OFFTKP
- License: mit
- Created: 2024-06-26T16:22:34.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2025-01-25T22:34:54.000Z (5 days ago)
- Last Synced: 2025-01-25T23:30:50.130Z (5 days ago)
- Topics: cpp, emulator, linux, risc-v, x86-64
- Language: C++
- Homepage:
- Size: 19.9 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- License: LICENSE
Awesome Lists containing this project
README
# felix86
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](./docs/how-to-use.md).
Want to contribute but don't know what to do? [Check this out](./docs/contributing.md).
## Features
- 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## Compatibility
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](https://github.com/FEX-Emu/FEX), for x86 & x86-64 on AArch64
- [box64](https://github.com/ptitSeb/box64), for x86 & x86-64 on AArch64 and RISC-V
- [qemu-user](https://www.qemu.org/docs/master/user/main.html), for basically everything on everything## Dependencies
felix86 depends on a bunch of great projects:
- [FEX](https://github.com/FEX-Emu/FEX)'s incredible unit test suite & rootfs generation
- [Biscuit](https://github.com/lioncash/biscuit) for RISC-V emitting
- [Zydis](https://github.com/zyantific/zydis) for decoding/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## Why?
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## 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), the current greatest PS4 emulator