• Stars
    star
    2,630
  • Rank 17,406 (Top 0.4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 6 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

计算机系统要素-从零开始构建现代计算机(nand2tetris)

这本书主要讲解了计算机原理(1-5章)、编译原理(6-11章)、操作系统相关知识(12章)。不要看内容这么多,其实这本书的内容非常通俗易懂,翻译也很给力。每一章背后都有对应的练习,需要你手写代码去完成,堪称理论与实践结合的经典。

这里引用一下书里的内容简介,大家可以感受一下。

本书通过展现简单但功能强大的计算机系统之构建过程,为读者呈现了一幅完整、严格的计算机应用科学大图景。本书作者认为,理解计算机工作原理的最好方法就是亲自动手,从零开始构建计算机系统。 通过12个章节和项目来引领读者从头开始,本书逐步地构建一个基本的硬件平台和现代软件阶层体系。在这个过程中,读者能够获得关于硬件体系结构、操作系统、编程语言、编译器、数据结构、算法以及软件工程的详实知识。通过这种逐步构造的方法,本书揭示了计算机科学知识中的重要成分,并展示其它课程中所介绍的理论和应用技术如何融入这幅全局大图景当中去。
全书基于“先抽象再实现”的阐述模式,每一章都介绍一个关键的硬件或软件抽象,一种实现方式以及一个实际的项目。完成这些项目所必要的计算机科学知识在本书中都有涵盖,只要求读者具备程序设计经验。本书配套的支持网站提供了书中描述的用于构建所有硬件和软件系统所必需的工具和资料,以及用于12个项目的200个测试程序。
全书内容广泛、涉猎全面,适合计算机及相关专业本科生、研究生、技术开发人员、教师以及技术爱好者参考和学习。

而且,这本书的门槛非常低,只要你能熟练运用一门编程语言即可。

本书从与非门开始教你一步步构建一个完整的计算机(1-5章);从第 6 章开始一直到第 11 章,需要完成三个编译器(汇编编译器、VM 编译器、Jack 语言编译器);最后一章则需要完成操作系统部分功能。

如果你完成了本书所有的项目,则会获得以下成就:

  • 构建出一台计算机(在模拟器上运行)
  • 实现一门语言和相应的语言标准库
  • 实现一个简单的编译器

其他的编译原理书籍,在你学完后,可能还是不知道如何下手去实现一个编译器。

但这本书不一样,它是手把手教你一步一步的实现一个编译器

其他语言版本答案

本书的第 6 - 11 章实验需要使用高级语言来实现,本仓库使用的是 JavaScript 语言。但仍然有许多开发者,他们熟悉的语言不是 JavaScript。因此,我添加了一些用其他语言实现的版本链接,方便大家学习。

配套资料

书籍请加 QQ 群 39014053,在群文件里下载。

注意

我上传的只有答案,测试用例和工具请点击全套工具下载。

有问题欢迎提 issues,也可以选择加入 QQ 交流群 39014053,有问题随时提问。

内容简介

在完成所有项目后,可以跑一下软件提供的测试用例,感受一下计算机的奇妙之处:

问题

硬件平台

1.布尔逻辑

介绍了各种基础逻辑门,并且所有门都是基于nand门实现的

  • and and16
  • dmux dmux4way dmux8way
  • mux mux16 mux4way16 mux8way16
  • not not16
  • or or16 or8way
  • xor

2.布尔运算

  • 二进制数
  • 二进制加法
  • 半加器
  • 全加器
  • 加法器
  • 增量器
  • ALU

3.时序逻辑

组合芯片

  • 布尔芯片
  • 算术芯片

时序芯片

时序芯片基于大量的DFF门

  • 时钟
  • 触发器
  • 寄存器
  • 内存
  • 计数器

4.机器语言

  • A指令
  • C指令
  • 寻址方式:直接寻址、立即寻址、间接寻址

5.计算机体系结构

  • 内存
  • CPU
  • 寄存器
  • 输入输出

软件阶层体系

  1. 汇编编译器
  2. 虚拟机I:堆栈运算
  3. 虚拟机II:程序控制
  4. 高级语言
  5. 编译器I:语法分析
  6. 编译器II:代码生成
  7. 操作系统

License

MIT

赞助

More Repositories

1

visual-drag-demo

一个低代码(可视化拖拽)教学项目
Vue
5,107
star
2

introduction-to-front-end-engineering

一本小书《带你入门前端工程》
1,885
star
3

MIT6.828

实现一个操作系统内核
C
1,796
star
4

Front-end-articles

分享我的编程经验和学习心得,订阅请点 watch
JavaScript
1,523
star
5

Front-end-basic-knowledge

前端知识点、面试题
792
star
6

vue-admin-template

Vue 轻量级后台管理系统基础模板
Vue
763
star
7

vue-form-maker

Vue 表单生成器——动态生成表单组件
JavaScript
259
star
8

monitor-demo

一个前端监控 SDK 教学项目
JavaScript
186
star
9

mini-vue

模仿 Vue1.0 写的迷你版 Vue
JavaScript
177
star
10

true-question

计算机及应用(本科)自考历年真题分享
159
star
11

mini-cli

模仿 Vue CLI 写的迷你版脚手架
JavaScript
124
star
12

node-blog

用 node 搭建个人博客
JavaScript
119
star
13

mini-single-spa

一个微前端框架教学项目
TypeScript
109
star
14

2017ife-task

2017百度前端技术学院任务
JavaScript
61
star
15

tiny-rendering-engine

从零开始实现一个玩具版浏览器渲染引擎
TypeScript
60
star
16

vue-upload-imgs

vue 图片上传组件(base64 版)
JavaScript
50
star
17

copy-rollup

拷贝自 rollup 初版源码,并对其进行了部分修改
JavaScript
46
star
18

i18n-replace

前端国际化辅助工具——自动替换中文并翻译
JavaScript
44
star
19

2016ife-task

2016百度前端技术学院任务
HTML
39
star
20

vue-ssr-demo

Vue 服务端渲染 demo
JavaScript
29
star
21

front-end-specification

前端规范
27
star
22

front-end-engineering-demo

前端工程化 demo
JavaScript
23
star
23

lowcode-llm-demo

低代码与大语言模型的结合实践 demo
Python
21
star
24

Computer-Networking-Lab

计算机网络-自顶向下-第六版实验
JavaScript
19
star
25

Algorithm

《算法》第 4 版 JavaScript 实现
JavaScript
19
star
26

platform-template-generator

JavaScript
18
star
27

micro-frontend-demo

微前端 DEMO
JavaScript
17
star
28

vite-vue3-eslint-stylelint-demo

vite-vue3-eslint-stylelint-demo 代码自动格式化
JavaScript
13
star
29

leetcode

leetcode
JavaScript
11
star
30

git-hooks-demo

用于演示 git hooks 脚本的 DEMO
JavaScript
10
star
31

table-tree

一个jquery树形表格组件
HTML
10
star
32

2018ife-task

2018前端技术学院任务
HTML
10
star
33

Notes-and-Labs

计算机学习笔记及实践
10
star
34

mini-vuex

和mini-vue配套使用的状态管理模式
JavaScript
10
star
35

markdown-editor-sync-scroll-demo

markdown 编辑器双屏同步滚动
HTML
9
star
36

source-map-demo

对压缩过的代码报错信息进行还原
HTML
9
star
37

vue-mergeable-table

根据数据动态生成可合并行列的表格
Vue
8
star
38

MIT6.830

实现一个数据库
6
star
39

rollup-plugin-import-to-const

将 import 导入变量替换为 const 命名变量 的 rollup 插件
TypeScript
6
star
40

nestjs-demo

multiple nestjs demos
TypeScript
6
star
41

github-actions-aliyun-demo

github-actions-aliyun-demo
HTML
5
star
42

github-actions-demo

自动部署到 github page
Vue
5
star
43

self-learning-english

分享一下自学英语的过程
5
star
44

eslint-config-airbnb-vue3-ts

结合了 airbnb 和 prettier 风格规范的 eslint 配置,适用于 vue3、js、ts 项目
JavaScript
4
star
45

nodejs-learning-notes

nodejs 学习笔记
JavaScript
4
star
46

woai3c.github.io

HTML
3
star
47

npm-proxy-cli

可以方便的通过命令行开启/关闭 npm http/https 代理,不支持 socks5。
JavaScript
3
star
48

toggle-router-abort-request

切换路由,取消请求-demo
JavaScript
2
star
49

type-challenges-answers

answers to type-challenges
2
star
50

webpack-demo

写一个 webpack loader 和 webpack plugin
JavaScript
2
star
51

tan-cli

tan-cli
JavaScript
2
star
52

monorepo-demo

monorepo-demo
JavaScript
1
star
53

apipost-api-generator

根据 apipost 导出的接口数据生成前端接口
TypeScript
1
star