| Crates.io | riscv-isa |
| lib.rs | riscv-isa |
| version | 0.3.1 |
| created_at | 2024-11-30 16:22:02.565274+00 |
| updated_at | 2025-03-01 15:35:58.490542+00 |
| description | RISC-V instruction set architecture library |
| homepage | |
| repository | https://codeberg.org/jwnrt/riscv-isa |
| max_upload_size | |
| id | 1466749 |
| size | 205,689 |
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 RV64I, M, A, F, D, Q, C, BZicsr, ZifenceiZawrsZfhZba, Zbb, Zbs, Zbc, ZbkbDecoding 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);
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.