Nand2Tetris Projects Introduction

2016/05/28 Nand2Tetris Jack Java
GPL-3 知识共享许可协议 关注 分支

nand2teris

The Elements of Computing Systems: Building a Modern Computer from First Principles

I have been wondering how modern computers were built and saw Shimon Schocken’s presentation at TED, which introduced a course for students to build a modern computer that describes how modern computers are built from basic gate circuits. Each chapter introduces a project, one by one to complete these projects, you can construct a 16-bit Hack computer hardware emulator, based on this emulator, developed assembler and stacking virtual machine, designed Jack advanced programming language, As well as its compiler. Using the Java language to complete the various chapters of the project, and published to GitHub.

Contents

  • Resource
  • Projects
    • Typical hardware architecture (Chapter 1 ~ 5)
      • Boolean Logic Project 01
      • Boolean Arithmetic Project 02
      • Sequential Logic Project 03
      • Machine Language Project 04
      • Computer Architecture Project 05
    • Typical software architecture (Chapter 6 ~ 12)
      • Assembler Project 06
      • Virtual Machine Project 07, Project 08
      • Compiler Project 10, Project 11
      • Operating System Project 12
      • Jack High-Level Language and Demo Project 09
  • Copyright & License
  • Footnotes

Resource

  • This book: The Elements of Computing Systems 1
  • Official website:http://www.nand2tetris.org

  • Course materials: http://www.nand2tetris.org/course.php

  • Nand2Tetris Software: Download

    After downloading, put the downloaded zip file in an empty directory on your computer, and extract its contents as is, without changing the directories structure and names. In order to use the nand2tetris software tools, your computer must be equipped with a Java Run-time Environment. The JRE can be downloaded freely from many sites including this one. For best performance, download the latest available version.

  • Software Tools

    Tool Description Tutorial
    Hardware Simulator Simulates and tests logic gates and chips implemented in the HDL (Hardware Description Language) described in the book. Used in hardware construction projects. ppt pdf
    CPU Emulator Emulates the operation of the Hack computer system. Used to test and run programs written in the Hack machine language, in both its binary and assembly versions. ppt pdf
    VM Emulator Emulates the operation of our virtual machine (similar to Java’s JVM); used to run and test programs written in the VM language (similar to Java’s Bytcode). ppt pdf
    Assembler Translates programs from the Hack assembly language to Hack binary code. The resulting code can be executed directly on the Computer chip (in the hardware simulator), or emulated on the supplied CPU Emulator (much faster and more convenient). ppt pdf
    Compiler Translates programs written in Jack (a simple, Java-like object-based language) into VM code. The resulting code can run on the supplied VM Emulator. Alternatively, the VM code can be translated further by the supplied VM translator into Hack assembly code that can then be executed on the supplied CPU Emulator. (A GUI-less, command-level program)
    Operating system Translates programs written in Jack (a simple, Java-like object-based language) into VM code. The resulting code can run on the supplied VM Emulator. Alternatively, the VM code can be translated further by the supplied VM translator into Hack assembly code that can then be executed on the supplied CPU Emulator. (GUI-less)
    Text Comparer This utility checks if two input text files are identical, up to white space differences. Used in various projects. In Unix use “diff” instead. (A GUI-less, command-level program)

For more detail: http://www.nand2tetris.org/software.php

Projects

Boolean Logic

Boolean Arithmetic

Sequential Logic

Machine Language

Computer Architecture

Assembler

Virtual Machine-Part1

Virtual Machine-Part2

Jack High-Level Language and Demo

Compiler-Part1

Compiler-Part2

Operating System

Copyright 2015-2017 Reion Chan.

You are required to give attribution to the author (Reion Chan) for any
use of this program (GPLv3 Section 7b). 
Trying to pass off my code as your own in your Elements of Computing classes
will result in a cursed life of forever buggy software.
 
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Footnotes

  1. MIT Press, By Noam Nisan and Shimon Schocken 

  2. Multiplexor is a device that selects one of several analog or digital input signals and forwards the selected input into a single line. 

  3. Demultiplexor take one data input and a number of selection inputs, and they have several outputs. 

  4. Multiple-Bit Computer hardware is typically designed to operate on multi-bit arrays called “buses.” For example,a basic requirement of a 32-bit computer is to be able to compute (bit-wise) an And function on two given 32-bit buses. 

  5. Multiple-Way accept multiple inputs 


GPL-3 知识共享许可协议

Search

    mail github location contact

    Table of Contents