riscv-isa 0.3.1

RISC-V instruction set architecture library
Documentation
  • Coverage
  • 2.62%
    35 out of 1334 items documented3 out of 3 items with examples
  • Size
  • Source code size: 205.22 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 10.8 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 12s Average build duration of successful builds.
  • all releases: 10s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • jwnrt

RISC-V ISA library

builds.sr.ht status

Rust crate for working with the RISC-V instruction set architecture.

This library currently supports decoding RISC-V instructions, finding CSRs, and has partial support for producing disassembly.

Instructions from the following specs and extensions are supported:

  • RV32 and RV64
  • I, M, A, F, D, Q, C, B
  • Zicsr, Zifencei
  • Zawrs
  • Zfh
  • Zba, Zbb, Zbs, Zbc, Zbkb

Usage

Decoding instructions:

use std::str::FromStr;
use riscv_isa::{Decoder, Instruction, Target};

let target = Target::from_str("RV32IMACZifencei_Zicsr").unwrap();
let instructions = [
    0x83, 0xa2, 0xad, 0x00, // lw x5, 10(x27)
    0x33, 0x82, 0x78, 0x03, // mul x4, x17, x23
];

let mut decoder = Decoder::from_le_bytes(target, &instructions[..]);

assert_eq!(decoder.next(), Some(Instruction::LW { rd: 5, rs1: 27, offset: 10 }));
assert_eq!(decoder.next(), Some(Instruction::MUL { rd: 4, rs1: 17, rs2: 23 }));
assert_eq!(decoder.next(), None);

License

This work is distributed under the terms of the MPL-2.0 license. See LICENSES for details. This project follows the REUSE specification, version 3.3.