Skip to content
/ duna Public

A RISCV emulator built in Rust

License

Notifications You must be signed in to change notification settings

noloerino/duna

Repository files navigation

duna

Coverage Status

An assembly simulator built in Rust.

See also

Current functionality

  • Run by CLI with cargo run <INPUT_FILE>
  • RISC-V
    • Supports most of RV32IM and RV64IM
    • Supports a few ecalls
  • MIPS
    • WIP

Roadmap

RISC-V

  • Finish multiplication extension
  • Figure out which CSRs to support

OS/Memory

  • Fix page table/TLB lol
  • Instruction decoding + instruction fetches
  • Distinguish between IMEM/DMEM
  • Interrupts?
  • Kernel memory?
  • Fence instructions
  • Configurable cache hierarchy, store buffers

Interface

  • Standard library functions
  • CLI configuration
  • Support assembler relocation functions
  • Display regfile, memory, and cache info
  • Ability to poke values in registers, memory, etc. (add sources/causes to diff structs?)
  • Provide debugger support a la GDB, possibly valgrind-like tools as well?
  • Implement peephole optimizations + visualizations

Niceties

Other ISAs?

  • MIPS 32/64bit? whatever they're called?
  • Atmel AVR
  • ARM
  • x86-64
  • wasm
  • some LLVM IR

About

A RISCV emulator built in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages