7 个版本 ()

1.0.0-beta.32024年8月16日
1.0.0-beta.2 2024年8月13日
0.1.4 2024年7月13日
0.1.3 2023年10月17日

#371 in 编码

Download history 5/week @ 2024-05-17 5/week @ 2024-05-24 2/week @ 2024-05-31 3/week @ 2024-06-07 5/week @ 2024-06-14 1/week @ 2024-07-05 218/week @ 2024-07-12 117/week @ 2024-07-19 278/week @ 2024-07-26 74/week @ 2024-08-02 255/week @ 2024-08-09 240/week @ 2024-08-16

每月下载量 893
用于 l2r0-profiler-host

MIT 许可证

100KB
2.5K SLoC

raki

Rust
Rust 编写的 RISC-V 指令解码器。

  • 支持 32/64位。
  • 支持 rv32/64imacZicsrZifencei 扩展。
  • 实现 Display 特性以进行格式化。

使用方法

调用 decode 的 u16/u32 方法。

use raki::{BaseIOpcode, Decode, Instruction, Isa, OpcodeKind};

fn main() {
    let inst_bytes: u32 = 0b1110_1110_1100_0010_1000_0010_1001_0011;
    let inst: Instruction = match inst_bytes.decode(Isa::Rv32) {
        Ok(inst) => inst,
        Err(e) => panic!("decoding failed due to {e:?}"),
    };

    assert_eq!(inst.opc, OpcodeKind::BaseI(BaseIOpcode::ADDI));
    println!("{inst}");
}
// --output--
// addi t0, t0, -276

支持

  • BaseI (RV32I, RV64I)
  • M
  • A
  • D
  • G
  • Q
  • C
  • B
  • P
  • V
  • H
  • Zicsr
  • Zifencei
  • Priv (目前仅支持 mretsretwfisfence.vma)

许可证

此软件包采用 MIT 许可证。
有关详细信息,请参阅 LICENSE

贡献

欢迎所有贡献,包括问题、拉取请求、问题等...有关详细信息,请参阅 CONTRIBUTING.md

无运行时依赖