The project aims to uncover the layers of abstraction beneath a modern computer, by building every component of a simplified computer from scratch. The computer is simulated in software. All the course materials and software are a part of a self-paced course offered at https://www.nand2tetris.org/
Knowledge of Digital Design is cultivated by making logic components like Mux, DeMux, bit-shifters etc. All these components come together to make a simulated micro-processor working for a custom defined set of instructions.
An assembler is created to convert assembly instructions to binary. The assembly instructions is dependent on the architecture of the microprocessor.
A stack based implementation for Virtual Machine is used as an intermediate between high-level language and assembly. A VM Translator is used to convert the vm instructions to their assembly eequivalent
A High Level language is used to code the logic and OS for this computer system. A Compiler is created to convert the High Level Language to vm instructions.