- 博客(9)
- 收藏
- 关注
原创 计算机系统要素:第十二章 操作系统
终于来到了Hack计算机架构的最后一部分——操作系统的构建了!这一章的内容涉及了大量的逻辑架构、算法问题与细节处理,需要花很多精力才能够完成。我曾经与nand2tetris团队的一位工作人员有过联系,他就指出,这本书最后几个较难的章节介绍性的内容太少了,最后的OS章节如果作为正常的上课来学习的话,两周时间是绝对不够的(只要想想,计算机专业的学生得花一个学期学OS),其中涉及了太多问题。因此,在这篇
2014-09-30 13:22:40
2589
原创 计算机系统要素:第十一章 编译器:代码生成
在《计算机系统要素》一书的第十一章,我们来到了编译器部分的最后一个章节——代码生成阶段。本章项目主要基于第十章的语法分析进行语义分析,将Jack语言转化为VM语言,完成完整的Jack编译器的构建。
2014-09-17 16:51:13
2057
1
原创 计算机系统要素:第十章 编译器:语法分析
通常来讲,做一个完整的编译器是非常浩大的工程,往往需要许多人经年累月的工作才能实现,但所幸,本书的作者将编译器的实现做到了最简化,我们只需要按照书上7、8、10、11章的框架,便可以在最短的时间内完成一个简易的编译器。 这一章的内容是对Jack语言进行语法分析,将每一个Jack文件转化为结构化的xml文件。如果说前面几章的难度已经逐渐由菜鸟变为中等级别的话,最后这几章的难度便开始向达人级别
2014-09-10 15:58:46
2076
3
原创 计算机系统要素:第八章 虚拟机II 程序控制
本章的内容完全基于第七章,其核心是理解堆栈如何处理函数,并对程序运行控制有更充分的认识。在这里我必须对本书作者致敬,因为这一章的编排实在是太完美了,对于如此抽象的程序调度的概念,作者居然能够由浅入深地将其讲得如此透彻,功力实在是深厚。所以,我仍然强烈推荐大家按照顺序把每一个项目都完成。下面是我个人再做这一章时总结的四个注意点,供大家参考。 首先需要明确的是全局堆栈的概念。一开始接触全局堆栈
2014-09-06 19:17:37
1647
4
原创 计算机系统要素:第七章 虚拟机I:堆栈运算
HACK机器语言要点复习:1,@X的意义为把X存入A寄存器,M代表的是Memory[A],即A所代表的地址中所存的数值,A=MM=D两句并列意味着将D中数据存入Memory[A],这是这一章中用得最多的逻辑语句。 2,在实现eq,gt,lt时,需要用汇编语言实现If的选择功能,这里需要用到两个lable,一个有条件jump,一个无条件jump,代码实现为: //Compare
2014-09-05 10:30:04
2239
4
原创 计算机系统要素:第六章 Part2 汇编编译器(symbol)
要给汇编编译器加入符号,首先要明确这个汇编编译器有哪些符号:预定义符号:SP,LCL等,这些符号预先就在SymbleTable中定义好了对应内存的地址变量variables:注意,变量是在第二遍读取阶段才依次从地址16开始计算的标签符号lables:你会在机器码中见到(LOOP)@LOOP 这样的循环代码,这些就是标签代码,之所以要分两遍读取,就是因为(LOOP)这样的标签有可能出现在
2014-08-29 00:42:22
2089
原创 计算机系统要素:第六章 Part1 汇编编译器(nonsymbol)
这一章的项目是自己编写一个汇编编译器,实现机器码到二进制码的转换。建议大家照着书上的流程和API做,先写出nonsymbol的编译器,再写symbol编译器,原因是带symbol的转化规则刚接触时不太容易理解。我使用的语言是python,同时也建议大家使用python这类脚本语言,总共代码不超过150行,非常简洁。 首先给不熟悉python模块的同学们写几个TIPS:1,首先要建立PY
2014-08-29 00:31:23
2098
1
原创 计算机系统要素:硬件描述语言HDL简介
这个系列是我近期学习The Elements of Computing Systems的学习笔记,这是一个网络公开课程,旨在教授任何人从零开始实现计算机构建的完整流程,点击进入网站。由于这是一个英文课程,且中文相关资料较少,我会在学习的过程中将碰到的一些问题和解决方法记录下来,方便其他人参考学习。Q1:HDL语言入门本章的Project要求使用原始的Nand门以及由此构建的
2014-08-23 15:06:24
5103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人