Welcome to my Nand2Tetris project repository! This repository contains my implementations of the projects from the Nand2Tetris course (http://nand2tetris.org/), with all projects involving high level languages implemented using C++. The primary goal is to deepen my understanding of computer architecture while also familiarizing myself with C++.
Nand2Tetris is a unique course that teaches the principles of computing starting from the most elementary building block, the NAND logic gate, all the way to constructing a general-purpose computer. The course is structured over 12 chapters, each dealing with different aspects of computer science and engineering, such as hardware, assembly language, operating systems, and high-level programming.
Each directory in this repository corresponds to one of the 12 projects:
- Project 01: Boolean Logic
- Project 02: Boolean Arithmetic
- Project 03: Memory
- Project 04: Machine Language
- Project 05: Computer Architecture
- Project 06: Assembler
- Project 07: VM I: Stack Arithmetic
- Project 08: VM II: Program Control
- Project 09: High-Level Language
- Project 10: Compiler I: Syntax Analysis
- Project 11: Compiler II: Code Generation
- Project 12: Operating System
Each folder contains the C++ source files, along with a detailed README explaining the implementation and any deviations from the original specifications.
To build the C++ projects, you will need a C++ compiler that supports C++20 or later. To compile the projects use the makefile included with each project. Also refer to the project specific instructions found in the README for each project.
To run the projects written using the HDL, VM or other nand2tetris specific languages, please use the tools found on https://nand2tetris.github.io/web-ide/chip/.