3 releases (breaking)
Uses new Rust 2024
| 0.3.0 | Jan 24, 2026 |
|---|---|
| 0.2.0 | Dec 20, 2025 |
| 0.1.0 | Dec 20, 2025 |
#65 in Emulators
369 downloads per month
39KB
935 lines
libriscv
Safe Rust wrapper around libriscv_sys, a fast RISC-V sandbox emulator.
How to use
Add the crate to your dependencies and run a RISC-V ELF:
use libriscv::{Machine, Options, SyscallRegistry};
let elf = std::fs::read("program").unwrap();
let options = Options::builder().build().unwrap();
let registry = SyscallRegistry::empty();
let mut machine = Machine::new(&elf, options, ®istry).unwrap();
machine.run(1_000_000).unwrap();
You can also define registries using the macros:
use libriscv::{syscall, syscall_registry, SyscallContext, SyscallResult};
#[syscall_registry]
mod host_syscalls {
use super::*;
#[syscall(id = 1)]
fn write(_ctx: &mut SyscallContext) -> SyscallResult<()> {
Ok(())
}
}
let registry = host_syscalls::registry().unwrap();
See examples/ for more usage patterns.
Credits
The directory examples/advanced/riscv_program is copied from the upstream repository.
Dependencies
~1–1.7MB
~39K SLoC