This is a repository for Elements of Computing Systems (nand2tetris)!
tools The author-supplied tools
src The projects
project01 - Boolean Logic build elementary logic gates out of Nand gates
project02 - Boolean Arithmetic build ALU out of elementary logic gates
project03 - Sequential Logic build registers, memory banks, and counter chips out of data-flip-flops
project04 - Machine Language Program in assembly language, get acquainted with Hack computer platform
project05 - Computer Architecture Integrate chips from projects 01-03 into a Hack computer platform
project06 - Assembler Develop an assembler that translates Hack assembly language to binary code understood by Hack computer platform
project07 - Virtual Machine I Write the first part of a VM-to-Hack translator, implementing stack arithmetic and memory access commands
project08 - Virtual Machine II Extend the VM-to-Hack translator from project07 into a full-scale translator (with ability to handle program flow and function calling commands)
project09 - High-Level Language Program in Jack, a simple object-based language, to prepare for writing a Jack compiler and the Jack operating system
project10 - Compiler I Write the first part of a Jack compiler: a syntax analyzer that tokenizes the source and generates an XML parse tree
project11 - Compiler II Extend the syntax analyzer from project10 into a full-scale Jack compiler that generates executable VM code
project12 - Operating System Write a combination of a simple OS and a standard library for the Jack language, to (i) encapsulate various hardware-specific services in a software-friendly way, and (ii) extend Jack with various functions and abstract data types
projectEX1 - Extra Project #1 Take a program in high-level .jack, convert it to .hack binary using my tools only (i.e. nothing author-supplied), and run on the emulated Hack computer platform.