Building a Modern Computer from First Principles
I recommend the associated book[0] to everyone who asks me about programming book recommendations. The book arrives, and you are shocked at how small it is, just a few hundred pages. If you follow all of the exercises, you get an understanding of how logic works inside of processors (logic gates, adders, etc.), how machine code drives them, how assembly maps to machine code, how a basic virtual machine language (like the JVM) can compile to assembly, then how a higher level language is designed and compiled to the VM.<p>After doing all of this, you make Tetris in the high level language. It's a badass book, super well-written, and what I consider an essential text.<p>[0] <a href="https://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686" rel="nofollow">https://www.amazon.com/Elements-Computing-Systems-Building-P...</a>