| Crates.io | risc-v-disassembler |
| lib.rs | risc-v-disassembler |
| version | 0.0.1 |
| created_at | 2025-06-15 10:30:00.316697+00 |
| updated_at | 2025-06-15 10:30:00.316697+00 |
| description | Decodes RISC-V instructions into a rust enum. |
| homepage | |
| repository | https://github.com/simlar-0/risc-v-disassembler |
| max_upload_size | |
| id | 1713160 |
| size | 107,311 |
A RISC-V disassembler that translates machine code into a Rust enum, with the main purpose of being used in Symex symbolic execution engine.
pub enum ParsedInstruction32 {
add {
rd: String,
rs1: String,
rs2: String,
},
addi {
rd: String,
rs1: String,
imm: i32,
},
}
use risc_v_disassembler::{
parse,
ParsedInstruction32,
parsed_instructions::*
};
let bytes = [0x93, 0x00, 0x51, 0x00];
let is_big_endian = false;
let use_abi_register_names = false;
let parsed_instruction = parse(&bytes, is_big_endian, use_abi_register_names).unwrap();
assert_eq!(parsed_instruction, ParsedInstruction32::addi (addi {
rd: "x1",
rs1: "x2",
imm: 5
}));
Or using ABI register names:
use risc_v_disassembler::{
parse,
ParsedInstruction32,
parsed_instructions::*
};
let bytes = [0x93, 0x00, 0x41, 0x00];
let is_big_endian = false;
let use_abi_register_names = true;
let parsed_instruction = parse(&bytes, is_big_endian, use_abi_register_names).unwrap();
assert_eq!(parsed_instruction, ParsedInstruction32::addi (addi {
rd: "ra",
rs1: "sp",
imm: 4
}));