https://github.com/max-dark/yeti-vm
Virtual machine for Yeti Project / RISC-V Virtual machine as library
https://github.com/max-dark/yeti-vm
cpp20 execution-environment risc-v runtime-environment virtual-machine
Last synced: 10 months ago
JSON representation
Virtual machine for Yeti Project / RISC-V Virtual machine as library
- Host: GitHub
- URL: https://github.com/max-dark/yeti-vm
- Owner: max-dark
- License: mit
- Created: 2024-12-05T21:14:04.000Z (over 1 year ago)
- Default Branch: release/current
- Last Pushed: 2025-04-05T01:12:24.000Z (about 1 year ago)
- Last Synced: 2025-04-05T01:28:29.545Z (about 1 year ago)
- Topics: cpp20, execution-environment, risc-v, runtime-environment, virtual-machine
- Language: C++
- Homepage:
- Size: 391 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license.md
Awesome Lists containing this project
README
# Yeti Project
## Yeti VM
RISC V 32bit virtual machine
### release/v0.0.5
#### Changes
* API changes
* Implement logic and tests for CSR instructions
#### TODO
* add concrete CSR handlers
* add events for execution cycle (PRE/POST)
### release/v0.0.4
At this moment VM can execute `riscv-non-isa/riscv-arch-test` subsets:
* `rv32i_m/I`
* `rv32i_m/M`
* `rv32i_m/privilege`(pass `ecall/ebreack`, throws exception on misaligned access)
#### Changes
* add integration for [RISC-V Architecture Test](tests/arch-tests/readme.md)
* fix IntMath handlers
### release/v0.0.3
#### Changes
* implement tests for RV32I
* add vm::bit_utils
* add instruction encoder
* CMake: add install targets for libraries
### release/v0.0.2
#### Changes
* fix offset calculation in `load`/`store`
* fix `div`/`rem` instructions: handle division by zero / overflows
* add scripts for building RISC-V executables
### release/v0.0.1
#### Supported instruction sets:
* RV32I - load/store data, basic math, jumps and branches
* RV32M - integer multiplication/division
#### Customisation points
* opcode handlers
* memory access handlers
* code loaders
* system calls
#### Supported formats
* binary (`objcopy -O binary`)
* intel hex (`objcopy -O ihex`)