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 模拟器
90KB
2K SLoC
Brubeck!
Brubeck 的目标是创建一个 RISC-V 汇编语言的 REPL 以及一个非常容易使用的模拟库 -- 一个用于学习的游乐场,而不是一个高性能的模拟器。
这是一个 非常 初步的原型。有关运行 REPL 和使用库的更多信息,请参阅 brubeck crate 文档。
如果您对这个项目感兴趣,请关注此仓库!我也非常欢迎您对您认为在 RISC-V 汇编语言游乐场中应该看到的功能提出反馈和想法。
当前状态
- 模拟器覆盖了 RV32I 指令集,除了
EBREAK
、ECALL
和FENCE
指令。 - 解释器可以评估指令(例如:
ADD x1, x2, x3
)并检查寄存器。
示例
下面的示例演示了使用 ADDI
和 ADD
指令以及检查寄存器的状态。
$ 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 指令的管道 - 添加内存检查
- 添加八进制、十六进制和二进制值的解析