Nand2Tetris 项目介绍

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

nand2teris

《计算机系统要素-从零开始构建现代计算机》1

之前一直有想了解现代计算机是如何构建起来的,偶然间看到Shimon SchockenTED的一期演讲,介绍其为学生开发了一套逐步构建现代计算机的课程,该课程让大家了解现代计算机如何从基本门电路开始慢慢被构建。全书以项目为单元,逐一完成这些项目,即可构造出一个16位的Hack计算机硬件,在此硬件之上,开发出汇编编译器、堆栈式虚拟机,针对虚拟机设计出高级编程语言Jack,同时开发出相应的Jack语言编译器。真是相见恨晚,细读的同时根据规范采用Java语言完成了各个章节项目,故而有了此GitHub上的项目代码。

目录

  • 资源
  • 项目
    • 典型的硬件体系 (第一章 ~ 第五章)
      • 布尔逻辑 Project 01
      • 布尔算术 Project 02
      • 时序逻辑 Project 03
      • 机器语言 Project 04
      • 计算机体系结构 Project 05
    • 典型的软件体系 (第六章 ~ 第十二章)
      • 汇编编译器 Project 06
      • 虚拟机 Project 07Project 08
      • 编译器 Project 10Project 11
      • 操作系统 Project 12
      • Jack高级语言及程序样例 Project 09
  • 中文版勘误
  • 版权
  • 项目源码许可证

资源

工具 描述 教程下载
硬件仿真器 采用HDL描述的用来仿真及测试逻辑门电路芯片。 ppt pdf
CPU仿真器 仿真Hack计算机系统的运作,用来测试运行使用Hack机器语言编写的程序。(可运行二进制形式或汇编形式的版本) ppt pdf
VM仿真器 仿真书中描述的虚拟机的运作,用来运行测试使用VM语言编写的基于Hack-Jack平台的程序。 ppt pdf
汇编编译器 将使用Hack汇编语言编写的程序翻译成Hack二进制机器代码。编译后的代码可以直接在硬件仿真器里的计算机芯片运行或在CPU仿真器上运行(速度更快) ppt pdf
编译器 将使用Jack语言编写的程序编译成VM代码,该代码可在VM仿真器上执行。当然,VM代码还可以进一步由VM编译器和汇编编译器编译后生成机器代码在CPU仿真器或硬件仿真器上运行。 命令行程序
操作系统 Jack OS扩展了Jack语言,就想Java标准类库扩展了Java语言一样。工具包中提供了两种实现:1、 使用纯Jack语言编写的.vm类文件 2、 直接嵌入在VM仿真器里的更高效的版本 ——
文本比较器 比较两个文本是否内容一致,可用来检查自己实现的软硬件是否正确,类似diff命令 命令行程序

详情请访问:http://http://www.nand2tetris.org/software.php

项目

布尔逻辑

布尔算术

时序逻辑

机器语言

计算机体系结构

汇编编译器

虚拟机-上篇

虚拟机-下篇

Jack高级语言及程序样例

编译器-上篇

编译器-下篇

操作系统

本书中文版勘误

  • 4.2.3节 Page-67 图4.3中,表格右边的标题应为(当a=1)comp助记符

  • 4.2.5节 Page-70 第二段关于屏幕描述中,像素映射位置应为 RAM[16384+r·32+c/16]

  • 8.2.2节 Page-160 function f n 原文对n的解释位该函数有n个参数,应改为该函数有n个本地变量

  • 11.3.4节 Page-240 writeFunction中参数nArgs(int) 应改为 nLocals(int)

版权

所有程序及文件(Nand2Tetris所包含的原始文件除外)版权归属Reion Chan。

如你使用本程序及文件请注明作者(Reion Chan),详细参见GNU GPLv3

未遵照许可或私自盗用此程序及文件将被诅咒一生只写漏洞百出的程序。

项目源代码许可证

本程序为自由软件:你可以在遵照GNU GPLv3(及后续版本)条款的前提下,转发、修改本程序。

本程序旨在学习、交流,对本程序不承担任何担保责任,详细参见GNU GPLv3许可。

本程序包含一个GUN 通用公共授权GNU GPLv3。如果没有,请访问http://www.gnu.org/licenses/

脚注

  1. 周维、宋磊、陈曦翻译,电子工业出版社出版 

  2. MIT Press, By Noam Nisan and Shimon Schocken 

  3. Multiplexor 多路复用器,即:多路模拟信号通过选择位确定哪一路进行输出,多路串行共享输出线路 

  4. Demultiplexor 解复用器,与多路复用器相反,将单路模拟信号通过选择位确定输出到多条输出位的其中一条线路 

  5. 多位 输入、输出线路一次能够接纳、输出的比特位数 

  6. 多通道 输入线路的条数 


GPL-3 知识共享许可协议

Search

    mail github location contact

    Table of Contents