Nand-to-Tetris¶
这门课分为硬件和软件两个部分。
在硬件部分,你将进入 01 的世界,用与非门构造出逻辑电路,并逐步搭建出一个 CPU 来运行一套课程作者定义的简易汇编代码。
在软件部分,你将编写一个编译器,将作者开发的一个名为Jack的高级语言编译为可以运行在虚拟机上的字节码,然后进一步翻译为汇编代码。你还将开发一个简易的 OS,让你的计算机支持输入输出图形界面。
至此,你可以用 Jack 开发一个俄罗斯方块的小游戏,将它编译为汇编代码,运行在你用与非门搭建出的 CPU 上,通过你开发的 OS 进行交互。学完这门课程,你将对整个计算机的体系结构有一个全局且深刻的理解,对于你后续课程的学习有着莫大的帮助。
*faii:
我在大学一年级的暑假完成了这个项目的大半部分,包括常见数字电路的搭建(涵盖了数字电子技术的知识),CPU/内存/IO等硬件的实现(提前感受了计算机体系结构的内容),一个借鉴了大部分代码的翻译器。而软件部分的编译器以及操作系统,包括后续的Jack语言编程等内容,我并没有实现。不过硬件部分的实现,已经足够我在coursera上获得这门课的证书以及助学金。
TODO:目录