Skip to content
/ felix86 Public

An x86-64 emulator for RISC-V Linux

License

Notifications You must be signed in to change notification settings

OFFTKP/felix86

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Want to contribute but don't know what to do? Check this out.

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, for x86 & x86-64 on AArch64
  • box64, for x86 & x86-64 on AArch64 and RISC-V
  • qemu-user, for basically everything on everything

Dependencies

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

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, a 3DS emulator for Windows, MacOS, Linux and Android
  • shadPS4, the current greatest PS4 emulator

About

An x86-64 emulator for RISC-V Linux

Topics

Resources

License

Stars

Watchers

Forks

Languages