All Projects → ria-jit → ria-jit

ria-jit / ria-jit

Licence: GPL-3.0 license
Lightweight and performant dynamic binary translation for RISC–V code on x86–64

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
python
139335 projects - #7 most used programming language
objective c
16641 projects - #2 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to ria-jit

FEX
A fast usermode x86 and x86-64 emulator for Arm64
Stars: ✭ 650 (+1610.53%)
Mutual labels:  x86-64, emulation, x86
Arm now
arm_now is a qemu powered tool that allows instant setup of virtual machines on arm cpu, mips, powerpc, nios2, x86 and more, for reverse, exploit, fuzzing and programming purpose.
Stars: ✭ 719 (+1792.11%)
Mutual labels:  x86-64, qemu, x86
Reko
Reko is a binary decompiler.
Stars: ✭ 942 (+2378.95%)
Mutual labels:  x86-64, x86, risc-v
x86-Assembly-Reverse-Engineering
🛠 Knowledge about the topic of x86 assembly & disassembly 🛠
Stars: ✭ 27 (-28.95%)
Mutual labels:  x86-64, x86
simonpi
A quick & dirty script to emulate Raspberry PI family devices on your laptop.
Stars: ✭ 61 (+60.53%)
Mutual labels:  emulation, qemu
peekaboo
An standalone execution trace library built on DynamoRIO.
Stars: ✭ 17 (-55.26%)
Mutual labels:  x86-64, x86
FirmWire
FirmWire is a full-system baseband firmware emulation platform for fuzzing, debugging, and root-cause analysis of smartphone baseband firmwares
Stars: ✭ 555 (+1360.53%)
Mutual labels:  emulation, qemu
mdepx
MDEPX — A BSD-style RTOS
Stars: ✭ 17 (-55.26%)
Mutual labels:  qemu, risc-v
alpine-php-fpm
Lightweight and optimised PHP-FPM (PHP 7.4, 8.0, 8.1) Docker images with essential extensions on top of latest Alpine Linux.
Stars: ✭ 53 (+39.47%)
Mutual labels:  x86-64, x86
pinktrace
Pink's Tracing Library
Stars: ✭ 20 (-47.37%)
Mutual labels:  x86-64, x86
Reloaded.Assembler
Minimal .NET wrapper around the simple, easy to use Flat Assembler written by Tomasz Grysztar. Supports both x64 and x86 development.
Stars: ✭ 17 (-55.26%)
Mutual labels:  x86-64, x86
Zelda.RISCV.Emulator
A System Level RISCV32 Emulator Over x86_64: capable of booting RISCV Linux
Stars: ✭ 18 (-52.63%)
Mutual labels:  risc-v, dynamic-binary-translation
CodeDeobfuscator
Code Deobfuscator
Stars: ✭ 45 (+18.42%)
Mutual labels:  x86-64, x86
Inflame
User-mode Windows DLL injector written in Assembly language (FASM syntax) with WinAPI.
Stars: ✭ 63 (+65.79%)
Mutual labels:  x86-64, x86
Assembly-Syntax-Definition
This is the greatest syntax definition of All Time
Stars: ✭ 23 (-39.47%)
Mutual labels:  x86-64, x86
riscv em
Simple risc-v emulator, able to run linux, written in C.
Stars: ✭ 51 (+34.21%)
Mutual labels:  risc-v, rv64
x86e
A simple x86 emulator, debugger, and editor in JavaScript.
Stars: ✭ 89 (+134.21%)
Mutual labels:  x86-64, x86
qemu-android-x86-runner
Quick Start on How to Run Android x86 in QEMU
Stars: ✭ 102 (+168.42%)
Mutual labels:  qemu, x86
PBD
🖨️🐞 Printf Based Debugger, a user-friendly C debugger
Stars: ✭ 52 (+36.84%)
Mutual labels:  x86-64, x86
Aqeous
(Inactive, Checkout AvanaOS, Rewrite of this) This is a New Operating System (Kernel right now). Made completely from scratch, We aim to make a complete OS for Learning purpose
Stars: ✭ 23 (-39.47%)
Mutual labels:  qemu, x86

Dynamic Binary Translation (RISC-V -> x86) 🛠

Make RISC-V code executable on the x86-64 ISA by means of dynamic binary translation.

pipeline status

🏠 Homepage

Paper

You can find the source code of the paper under documentation. It is also published at researchgate.net.

Building the translator

After checking out the git repository (and running git submodule update --init to fetch the dependencies), the translator can be built via

  1. sudo apt-get -y install gcc g++ cmake make autoconf meson (required dependencies)
  2. mkdir build && cd build && cmake .. && make

We can execute binaries compiled via the RISC-V toolchain gcc and the options -static -march=rv64imafd -mabi=lp64d.

Usage

Usage: ./translator [translator option(s)] -f <filename> [guest options]

Options:
	-v, --version
		Show translator version.
	-f, --file <executable>
		Specify executable. All options after the file path are passed to the guest.
	-a, --analyze-all
	--analyze-mnem, --analyze-reg, --analyze-pattern
		Analyze the binary. Does not execute the guest program.
		Inspects passed program binary and shows the selected statistics.
	-b, --benchmark
		Benchmark execution. Times the execution of the program,
		excluding mapping the binary into memory.
	-p, --profile
		Profile register usage. Display dynamic register usage statistics.
	--perf
		Log the generated blocks to /tmp/perf-<pid>.map for externally profiling
		the execution in perf.
	-s, --fail-silently
		Fail silently for some error conditions.
		Allows continued execution, but the client program may enter undefined states.
	-h, --help
		Show this help.

Logging:
	--log=category,[...]
		Enable logging for certain categories. See --log=help for more info.
	-g	Display general verbose info (--log=general,strace)
	-i	Display parsed RISC-V input assembly (--log=asm_in)
	-o	Display translated output x86 assembly (--log=asm_out,verbose_disasm)
	-r	Dump registers on basic block boundaries (--log=reg)
	-c	Display cache info (--log=cache)

Optimization:
	--optimize=category,[...]
		Disable certain optimization categories. See --optimize=help for more info.
	-d	Enable Single stepping mode.
		Each instruction will be its own block. (--optimize=singlestep)
	-m	Disable all translation optimization features. (--optimize=none)

Run tests

./test

Authors

👤 Noah Dormann, Simon Kammermeier, Johannes Pfannschmidt, Florian Schmidt

Supervisor

👤 Alexis Engelke

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].