3 ms·
> 1. How mature/stable is it? I'll have > 200 students, and if the tools I give them are buggy I'll have to deal with a complaint avalanche. (MARS is very stabl
by thethirdone 8y ago
> 1. How mature/stable is it? I'll have > 200 students, and if the tools I give them are buggy I'll have to deal with a complaint avalanche. (MARS is very stable.)
As far as I am aware it is very stable. There were three slight bugs that I fixed after they were brought to my attention. #6, #7, #8 in the issue tracker [0].
There are some known bugs that are hard to fix, but I doubt any student would run into them as they all have to do with CSRs iirc or interrupts.
I try to be pretty responsive about issues when they are brought up; if it were holding up a class, I would spend some time to fix the issue. And its possible that a motivated student would be able to fix the problem themselves.
> 2. I want to build a test suite ... Is there any facility that allows me to use your simulator as a linkable library, rather than calling it from the command line? ...
IIRC the command line wasn't significantly changed so your existing command line script should work. As for a linkable library, depending on what you are looking for that should be possible. It is possible that there is some global state which makes it hard to reset properly.
When you say "linkable library" are you looking for a .jar with a clear api?
Is the inconvenience just about not wanting to script in bash? Or is it about JVM startup time?
I'll look into what it would take to make a easily configurable launch class.
[0]:https://github.com/TheThirdOne/rars/issues https://github.com/TheThirdOne/rars/issues
- YorkshireSeason 8y agoGreat. don't worry about interrupt bugs. My course is introductory, and will not touch such advanced material. > When you say "linkable library" are you looking for a .jar with a clear api? Yes, a .jar with a clear API would be ideal. Maybe a method with a signature like so: run :: String -> RISC_V_State Here the input string is the RISC-V assembly. The type RISC_V_State can be given in various ways. Minimally I need something along the lines of: - Error or successful-completion - Content of registers (in fact content of one register should be fine as long as that register can be used as an accumulator). Clearly all this is available internally already, so it'd just be a matter of creating a suitable API. I am aware of the global state issue. I would be happy to launch a new JVM for each test, although that is very slow (10000 tests * 200 students = 2,000,000 JVM starts). If there was a suitable "reset" method in the exposed API that would be even better.
- thethirdone 8y agoSounds doable. If there is a issue with global state, I'll isolate it. I think an accessible API would be a good feature. If you have a github account, feel free to make an issue. If not I'll make one after I get some sleep; I've been awake for far too long.
- YorkshireSeason 8y agoGreat. I'll do this later today. Thanks.