bgx / nand2tetris

Building a simple yet powerful computer system from the ground up. (Basic hardware platform + modern software hierarchy)
0 stars 2 forks source link

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.