Live data from Hacker News

Writing a RISC-V Emulator from Scratch

book.rvemu.app

1–10 of 16 posts

Re: Writing a RISC-V Emulator from Scratch

#2
This looks like a nice project, and I will check on its progress. So far only two of the advertised steps are there.

Reminds me, I started a RISC emulator project on a holiday - and then forgot about it when the holiday was over :o

Not sure if combining "learn rust" and "learn RISC V" at the same time is a good combination for a large audience, it will depend on the reader.

Maybe the intended audience is someone who knows enough basics and has plenty of motivation for/prior knowledge of/interest in both topics. And then, for good content, there will always be an audience.

Re: Writing a RISC-V Emulator from Scratch

#4
It looks like it's the season for hobby RISC-V emulators, because I've also been working on one.

https://github.com/michaelmelanson/riscy

The tricky part here comes when you have to run non-trivial programs. Mine currently passes the basic test suites, but it still fails in the C runtime startup when executing programs compiled with GCC. My next step is to do co-simulation with another emulator in order to find out where their execution states diverge.

Re: Writing a RISC-V Emulator from Scratch

#5
post #4

It looks like it's the season for hobby RISC-V emulators, because I've also been working on one. https://github.com/michaelmelanson/riscy The tricky part here comes when you have to run non-trivial programs. Mine currently passes the basic test suites, but it still fails in the C runtime startup when executing programs compiled with GCC. My next step is to do co-simulation with another emulator in order to find out w…

> Mine currently passes the basic test suites

The tests in riscv-tests are not complete enough to indicate strong compliance. I have found several bugs in my implementation that were not caught by them.

> but it still fails in the C runtime startup when executing programs compiled with GCC

The biggest issue I have seen with running C programs is that people don't have the system calls that C runs on startup. In a log from rv8, you need brk, uname, readlinkat, and mprotect. So without those you shouldn't be able to get a program into user code unless you make a custom entry point.

Source: I am the maintainer of RARS (https://github.com/TheThirdOne/rars)

Re: Writing a RISC-V Emulator from Scratch

#6
post #4

It looks like it's the season for hobby RISC-V emulators, because I've also been working on one. https://github.com/michaelmelanson/riscy The tricky part here comes when you have to run non-trivial programs. Mine currently passes the basic test suites, but it still fails in the C runtime startup when executing programs compiled with GCC. My next step is to do co-simulation with another emulator in order to find out w…

> Mine currently passes the basic test suites The tests in riscv-tests are not complete enough to indicate strong compliance. I have found several bugs in my implementation that were not caught by them. > but it still fails in the C runtime startup when executing programs compiled with GCC The biggest issue I have seen with running C programs is that people don't have the system calls that C runs on startup. In a log…

> The tests in riscv-tests are not complete enough to indicate strong compliance. I have found several bugs in my implementation that were not caught by them.

I've noticed that, yes. They got me pretty far, but there's something I'm doing wrong and I haven't been able to find what. That's why the next thing I'm going to try is co-simulation.

> The biggest issue I have seen with running C programs is that people don't have the system calls that C runs on startup. In a log from rv8, you need brk, uname, readlinkat, and mprotect. So without those you shouldn't be able to get a program into user code unless you make a custom entry point.

Yes, that hasn't been a problem so far. I've written minimal implementations of a few (so far: fstat, brk, exit) as I've gone along. https://github.com/michaelmelanson/riscy/blob/master/emulato...

Re: Writing a RISC-V Emulator from Scratch

#7
> This is the book for writing a 64-bit RISC-V emulator from scratch in Rust.

Next I want to see the book for writing a 64-bit RISC-V emulator from rust in Scratch ;)

The upper case S in the title made me believe for a second that they did it in Scratch :)

Re: Writing a RISC-V Emulator from Scratch

#8
post #7

> This is the book for writing a 64-bit RISC-V emulator from scratch in Rust. Next I want to see the book for writing a 64-bit RISC-V emulator from rust in Scratch ;) The upper case S in the title made me believe for a second that they did it in Scratch :)

Since I got into programming with Scratch, every time I see it capitalized in a HN title I get my hopes up that someone made something really cool in it. Alas, it never happens.

Re: Writing a RISC-V Emulator from Scratch

#10

This looks like a nice project, and I will check on its progress. So far only two of the advertised steps are there. Reminds me, I started a RISC emulator project on a holiday - and then forgot about it when the holiday was over :o Not sure if combining "learn rust" and "learn RISC V" at the same time is a good combination for a large audience, it will depend on the reader. Maybe the intended audience is someone who…

> Not sure if combining "learn rust" and "learn RISC V" at the same time is a good combination for a large audience, it will depend on the reader.

Heh, this is _exactly_ the combination that appeals to me, or at least would have before I learned either of them.

Post reply on HN