diff --git a/README.md b/README.md index 42d207d..7e4a7ee 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,46 @@ # rv -TODOs: - -- [ ] Support more instructions -- [ ] CSR -- [x] Load ELF -- [ ] Memory mapped IO devices -- [ ] Exception -- [ ] Interrupt -- [ ] CPU mode -- [ ] Virtual memory translation +rv is a 64-bit RISC-V emulator written in Go. +It only supports running ELF binary. + +## Installation + +``` +go install github.com/hidetatz/rv@latest +``` + +## Usage + +Pass an ELF program to run to `rv`. + +``` +rv -p ./hello +``` + +Debug will be enabled if `-d` option is passed. + +## Supported instructions + +- [ ] RV64G ISA + - [x] RV64I + - [ ] RV64M + - [ ] RV64A + - [ ] RV64F + - [ ] RV64D + - [x] Zifencei + - [x] Zicsr +- [x] RV64C ISA +- [x] Privileged ISA + +For the full list of the implemented instructions, see [instructions.go](./instructions.go). + +## Supported features + +- [x] ELF binary load +- [ ] Sv39 (Virtual memory) +- [x] CSR +- [ ] Devices + +## LICENSE + +MIT