#risc-v #指令 #汇编 #repl #模拟 #学习 #目标

bin+lib brubeck

A RISC-V REPL 和模拟库 ... 一个正在进行中的项目!

4 个版本

0.0.4 2023 年 6 月 27 日
0.0.3 2023 年 6 月 26 日
0.0.2 2023 年 1 月 5 日
0.0.1 2023 年 1 月 5 日

#103 in 模拟器

Apache-2.0

90KB
2K SLoC

Brubeck!

Brubeck 的目标是创建一个 RISC-V 汇编语言的 REPL 以及一个非常容易使用的模拟库 -- 一个用于学习的游乐场,而不是一个高性能的模拟器。

这是一个 非常 初步的原型。有关运行 REPL 和使用库的更多信息,请参阅 brubeck crate 文档

如果您对这个项目感兴趣,请关注此仓库!我也非常欢迎您对您认为在 RISC-V 汇编语言游乐场中应该看到的功能提出反馈和想法。

当前状态

  • 模拟器覆盖了 RV32I 指令集,除了 EBREAKECALLFENCE 指令。
  • 解释器可以评估指令(例如:ADD x1, x2, x3)并检查寄存器。

示例

下面的示例演示了使用 ADDIADD 指令以及检查寄存器的状态。

$ cargo run

Brubeck: A RISC-V REPL
Ctrl-C to quit

ADDI x1, x0, 5
=>ADDI(IType { opcode: 0, rd: X1, funct3: 0, rs1: X0, imm: Immediate { value: 5, bits: 12 } })
x1
=>X1: 5 (0x5)
ADDI x2, x0, 3
=>ADDI(IType { opcode: 0, rd: X2, funct3: 0, rs1: X0, imm: Immediate { value: 3, bits: 12 } })
x2
=>X2: 3 (0x3)
ADD x3, x2, x1
=>ADD(RType { opcode: 0, rd: X3, funct3: 0, rs1: X2, rs2: X1, funct7: 0 })
x3
=>X3: 8 (0x8)

待办事项

  • 完成通过 interpreter.rs 的 RV32I 指令的管道
  • 添加内存检查
  • 添加八进制、十六进制和二进制值的解析

联系

BlueskyMastodonTwitter 或通过 电子邮件 找到我。

无运行时依赖