RVVM – RISC-V Virtual Machine
github.com
github.com
https://riscv.org/exchange/software/
The most popular emulators are qemu and spike. There are even a few emulators written in Rust that aren't on the list:
https://github.com/shady831213/terminus
https://github.com/d0iasm/rvemu
I've messed around with Terminus the most.
It's a RISC-V emulator specially made for fuzzing software.
There's no documentation about it in the repo but the guy that wrote it streamed much of the development of it on Twitch and has put those videos on YouTube. He is also on HN.
I'm glad it's being done, just curious to know if there's a company with a profit incentive behind it. I don't say that as though it's a bad thing - there are tons of benefits of that. Just trying to understand what's happening.
Regardless, thank you for your efforts! I dream of a day when I buy a high performance RISC-V machine to use as my workstation.
And saying that you've written a virtual machine sounds cool too :)
At the beginning when interpreter wasn't tested yet we had a problem of Linux kernel crashing at the early stages of boot, IIRC that was memory setup. However, the bootloader (OpenSBI) booted correctly. Initially we thought that there was something unimplemented in the emulator, but it turned out there was a bug in one compressed instruction. Debugging this was a nightmare. After the fix kernel booted right to the userspace startup. So booting Linux took us about 2 months of work in total.
If you want to go form scratch compilcations will start to appear when you go out of the CPU and start implementing devices. You'll going to need them anyway because you'll want to boot from disk image or move a cursor in X :). Devices are independent of the CPU architecture and have their own standards, so implementing them will take some time too.
How performant it is? Does it feel usable on a mediocre host PC?
It's still works with interpreter with 1/3 of QEMU performance. With JIT (which is still WIP) it'll be even faster.
Source: I tried it on OpenBSD on a "moderm" machine (2007_ and with a medium-high load you could see redraws going on.
This never happened to me with FVWM or CTWM.
Time for someone to port Oberon again? :)