TinyVM – A small and easy to understand virtual machine in C
After seeing C4[1], everything else doesn't seem tiny at all... and maybe it's just me, but this is another one of those projects where I found the directory layout rather confusing, especially for something that claims to be "small and easy to understand." bin/ is empty, there's only a single nearly-empty file in src/, lib/ is also empty, include/tvm is two levels but one is empty, and all the interesting stuff actually appears to be in libtvm/ .<p>More importantly, even after going through all the files in libtvm/ , I still haven't managed to find the main instruction execution loop nor the decoding switch. Sorry, but I don't think "small and easy to understand" applies, and I've had experience with VMs and interpreters and the like for many years. Compare with this, for example:<p><a href="https://github.com/tjmerritt/z80" rel="nofollow">https://github.com/tjmerritt/z80</a><p>A rule-of-thumb when investigating the source code of a project for the first time: if I have to go more than 2 directories deep to get to the "meat" of the code, my desire to explore further drops significantly.<p>[1] <a href="https://news.ycombinator.com/item?id=8558822" rel="nofollow">https://news.ycombinator.com/item?id=8558822</a>