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

建议和<<深入理解计算机系统>>这本一起看, 一本自下而上讲述计算机,另一本自上而下讲述计算机.都是非常经典的书籍.
| 英文术语 | 翻译 |
|---|---|
| allocation | 内存分配 |
| assembly | 汇编 |
| class | 类 |
| class type | "类"类型 |
| compiler | 编译器 |
| constant | 常量 |
| constructor | 构造函数 |
| de-allocation | 内存去配 |
| dispose | 清除 |
| field | 域;字段 |
| identifier | 标识符 |
| invoke | 唤起(执行) |
| object-oriented | 面向对象 |
| object-base | 面向基类 |
| object instance | 对象实例 |
| parse/parsing | (语法)分析 |
| parser | (语法)分析器 |
| parser talbe | (语法)分析表 |
| parser tree | (语法)分析树 |
| pointer | 指针 |
| procedure | 过程 |
| procedural | 过程化 |
| reference | 引用 |
| subroutine | 子程序 |
| symbol | 符号 |
| syntax | 语法 |
| syntax tree | 语法树 |
| syntax analysis | 语法分析 |
| syntax analyzer | 语法分析器 |
| token | 字元 |
| tokenize | 字元化 |
| tokenizer | 字元转化器 |
| type conversion | 类型转换 |
| variable | 变量 |
硬件: 逻辑门;布尔运算;multiplexor(多路复用器);触发器(flip-flop);寄存器(register);RAM 单元;计数器;硬件描述语言(HDL,Hardware Description Language);芯片的仿真及测试.
体系架构: ALU/CPU 的设计与实现;机器代码;汇编语言程序设计;取址模式;I/O 内存印象.
操作系统: 内存管理;数学计算程序库;基本 I/O 驱动程序;屏幕管理;文件 I/O;对高级语言的支持
程序设计语言: 基于对象(object-base)的设计和编程模式;抽象数据类型;作用域;语法和语义;引用(reference)机制.
编译器: 词法分析: 自顶向下的语法分析;符号表(symbol table); 基于堆栈(stack-based)的虚拟机;代码生成: 数组和对象的实现.
数据结构和算法: 堆栈;哈希表;链表;递归;算术算法;几何算法;运行效率.
软件工程: 模块化设计;接口/实现范式;API 设计和文档;自动式测试;广义的程序概念设计;质量保证体系.
CHIP ALU {
IN
x[16], y[16], // 16-bit inputs
zx, // zero the x input?
nx, // negate the x input?
zy, // zero the y input?
ny, // negate the y input?
f, // compute out = x + y (if 1) or x & y (if 0)
no; // negate the out output?
OUT
out[16], // 16-bit output
zr, // 1 if (out == 0), 0 otherwise
ng; // 1 if (out < 0), 0 otherwise
PARTS:
Mux16(a=x, b=false, sel=zx, out=xx);
Mux16(a=y, b=false, sel=zy, out=yy);
Not16(in=xx, out=xxx);
Mux16(a=xx, b=xxx, sel=nx, out=xxxx);
Not16(in=yy, out=yyy);
Mux16(a=yy, b=yyy, sel=ny, out=yyyy);
Add16(a=xxxx, b=yyyy, out=xplusy);
And16(a=xxxx, b=yyyy, out=xandy);
Mux16(a=xandy, b=xplusy, sel=f, out=oo);
Not16(in=oo, out=notoo);
Mux16(a=oo, b=notoo, sel=no, out[15]=ng, out[0..7]=part1, out[8..15]=part2, out=out);
Not(in=notzero, out=zr);
Or(a=or1, b=or2, out=notzero);
Or8Way(in=part1, out=or1);
Or8Way(in=part2, out=or2);
}
非常建议先读一下冯诺依曼结构体系论述,这毕竟是整个计算机结构的基石啊
美籍匈牙利数学家冯·诺伊曼于 1946 年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺伊曼体系结构冯·诺伊曼理论的要点是:计算机的数制采用二进制;计算机应该按照程序顺序执行。人们把冯·诺伊曼的这个理论称为冯·诺伊曼体系结构。
PC 程序计数器自增指向下一个地址,把程序当做二进制数据来对待.
从 EDVAC 到当前最先进的计算机都采用的是冯·诺伊曼体系结构。所以冯·诺伊曼是当之无愧的数字计算机之父。