Giter Site home page Giter Site logo

armando1514 / from-nand-to-tetris-build-a-modern-computer Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 0.0 42.07 MB

Based on Nand-to-Tetris I and Nand-to-Tetris II. Building a computer from the ground up, starting with basic concepts like Boolean algebra and logic gates and progressing till a modern computer.

Scilab 42.07% Assembly 7.47% Hack 0.51% Java 40.30% HTML 9.65%
assembly circuits compiler cpu hardware-designs heap jack-language machine-code memory os stack virtual-machine

from-nand-to-tetris-build-a-modern-computer's Introduction

FROM NAND TO TETRIS - BUILD A MODERN COMPUTER

repo roadmap

This repo refers to two courses available on coursera:

You will take a self-paced journey through building a computer from the ground up, starting with Boolean algebra and logic gates and ending with a fully functional general-purpose computer. You will learn about hardware abstractions, implement them yourself, and ultimately experience the thrill of building a complex system. Each folder contains my own solutions to the assignments and my personal notes:

  • Project 1: Building basic logic gates like And, Or, Not, and Multiplexor
  • Project 2: Building a range of adder chips and an Arithmetic Logic Unit (ALU)
  • Project 3: Building registers, memory units, and a Random Access Memory (RAM)
  • Project 4: Learning a machine language and writing low-level programs
  • Project 5: Using the chipset from projects 1-3 to build a Central Processing Unit (CPU) and a hardware platform capable of running programs in the machine language from project 4
  • Project 6: Developing an assembler to translate programs written in symbolic machine language into binary code.
  • Project 7: In this module we begin building a stack-based virtual machine. After presenting the virtual machine architecture and its VM language (which is similar to Java's bytecode), we develop a basic VM translator (similar to Java's JVM), designed to translate VM programs into the Hack machine language.
  • Project 8: In the previous module we presented a virtual machine abstraction, and developed a basic VM translator that implements the VM language's arithmetic and memory access commands. In this module we'll complete the VM translator by implementing the remaining VM language's branching and function-calling commands.
  • Project 9: In this module we introduce the Jack language, as well as Jack programming. The module culminates in a project in which you will develop a simple interactive application of your choice, using Jack.
  • Project 10: The translation of a high-level program into a lower-level language consists of two well-defined and more or less independent stages: syntax analysis, and code generation.Syntax analysis - the subject of this module - consists of two sub-stages: lexical analysis (also called tokenizing), and parsing. The resulting project will be a Jack analyzer - a program that unveils the syntax of Jack programs without generating executable code.
  • Project 11: In the previous project we've built a syntax analyzer for the Jack language. In this we will morph this analyzer into a full-scale Jack compiler. This will entail modifying the analyzer's logic that generates XML code into logic that generates executable VM code.
  • Project 12: An operating system is a collection of software services designed to close gaps between high-level programs and the underlying hardware on which they run. Modern languages like Java and Python are deployed together with a standard class libraries that implement many such OS services. In this project we'll develop a basic OS that will be packaged in a similar set of class libraries. The OS will be developed in Jack, using a bootstrapping strategy, similar to how Linux was developed in C.

from-nand-to-tetris-build-a-modern-computer's People

Contributors

armando1514 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.