> There aren't many comprehensive systems resources if you aren't going to college, so I had to sift through tons of different sources of varying quality and sometimes conflicting information.
The absolutely best resource you will find is Charles Petzold's Code: The Hidden Language of Computer Hardware and Software. The 2nd edition was just released.
I think The Elements of Computing Systems by Noam Nisan and Shimon Schocken and the associated nand2tetris project is just as good if not better and is much more hands-on.
While these are great projects, they're for very different audiences. Code is a really well written pop-science book that goes into logic circuits. The Nand2Tetris book comments for example that:
> The HDL that we will use is documented in appendix 2 and can be learned in about one hour
which about as meaningful as saying you can learn X's syntax in an hour. Nand2tetris is a serious investment of time and if you've never done something like FPGA design (VHDL etc) or assembly, it takes a bit of getting your head around.
> While these are great projects, they're for very different audiences.
That was my point in posting The Elements of Computing Systems since it seems that the author of this post might be more interested in hands-on side of building a CPU and the software stack on top of that.
I think the authors are actually right in that the syntax of their HDL can be learned in an hour. It's more that learning how to use that syntax to build a CPU takes a good amount of time.
Thanks for the mention of Shenzhen IO. I'll check it out.
I read and loved that book however nowadays I highly recommend playing the game “Turing Complete” instead.
It does a fantastic job taking you from nand gates all the way to function calls but in a delightfully interactive way. Instead of just imagining how it all must work in ur head as u read, u get to build it.
I went so far as to build a little simd/gpu that drives an led matrix with my own cpu assembly and programmable shader language.
Indeed. It starts from first principles, assuming the reader doesn't know anything about computers or even electronics. The final chapters are about coding.
Your guide could actually serve as an addendum to the book. Based on the title of your guide, I was expecting something more like Code, but now having read your guide, it's more of an introduction to operating systems with a particular focus on Linux and the CPU/memory aspects. Well done.
> There aren't many comprehensive systems resources if you aren't going to college, so I had to sift through tons of different sources of varying quality and sometimes conflicting information.
The absolutely best resource you will find is Charles Petzold's Code: The Hidden Language of Computer Hardware and Software. The 2nd edition was just released.
https://codehiddenlanguage.com/