This project follows a wonderful book by Noam Nisan and Shimon Shocken, The Elements of Computing Systems. The book leads you through the architecture of a simple computer and explain the necessary details so that you can build the computer in exercises. All in all there is 12 exercises, each focusing on a different part. A short descriptions of the exercises follows:
- build, simulate, and test 15 elementary logic gates from NAND;
- build a family of chips adding numbers, and Arithmetic Logic Unit (ALU);
- build a family of Random Access Memory (RAM) chips from flip-flop gates;
- write a number of programs in assembly language, and test them in an emulator;
- assemble already built chips into a Central Processing Unit (CPU), and integrate CPU with RAM, i.e. build the 'Hack' computer;
- write an Assembler for the defined 'Hack' computer architecture;
- write the first part of Virtual Machine (VM) translator translating VM programs into the Hack assembly language;
- finalise the VM translator;
- write a program using a java-like, high-level programming language called Jack;
- write the first part of the compile from Jack to VM language;
- finalise the compiler;
- write an efficient OS libraries supporting the Jack language (memory management, math, array, string, graphics, and i/o libraries).