Improvements to the software suite

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Improvements to the software suite

ivant
Hi all,

I, like some other folks here, decided to make some improvements to the software suite, put it on github and see what happens.

My goal is to try to improve the tools but without changing the projects from the book. That is, the HAL, HACK and JACK platforms remain exactly the same (but see below).

Currently I did the following:
* Imported the source code and changed it to compile with "modern" versions of JDK (moder >= 1.5). This required to just rename one variable name from "enum".
* Mavenized the project. Maven has it's problems, but is better than ant and more supported than gradle.
* Created a profiler for the VM Emulator. This is the reason I initially started this project. The profiler is accessible from the "Run" menu.

You can find the project here: https://github.com/itoshkov/nand2tetris-emu. To compile it, run "mvn install" from the base directory. (I haven't updated the bat files. Patches are welcome.)

Things I want to do in no particular order and with no particular schedule:

* Improve the UI. Currently it's with fixed coordinates, mainly to accommodate easier animations. But the whole thing looks like it would require some work and maybe we should look at something other than Swing? JavaFX or SWT probably? (I'm not a UI person, so this is not that high priority for me

* Decouple the UI from the implementation. This seems to be the original idea behind how it's designed but it looks like it could use some improvements

* Figure out how to support extensions or even incompatible changes to Hack and Jack in a "pluggable" manner.

* Improve the VM debugger: support step-over call instructions; Jack-level source debugging, etc.

Have fun,
Ivan
Reply | Threaded
Open this post in threaded view
|

Re: Improvements to the software suite

ivant
New feature. The VM Emulator can now step-over calls. This means, that you can debug your function instruction-by-instruction, without jumping out of it when executing a call instruction.

 * This should work also for recursive calls (that is, you're staying on the current call level).

 * If the emulator hits a breakpoint, during step-over, it will stop there and will "forget" about the step-over.

Not well tested, yet. Please file bugs in the github project.

Cheers,
Ivan