第1部分 冯·诺依曼机器的雏形
第1章 电容器中的数据
1.1 电容器与晶体管
1.2 整数类型
1.3 字符与字符串
1.4 阅读材料
第2章 指令计算的艺术
2.1 指令即数据
2.2 URM:一种理论计算机
2.3 RISC-V解释器
2.4 读取指令:IF
2.5 指令译码:ID
2.6 执行指令:EX
2.7 访问内存:MEM
2.8 写回寄存器:WB
2.9 解释执行样例程序
2.10 阅读材料
第3章 过程调用的魔法
3.1 控制转移与返回
3.2 栈:表达式求值器
3.3 Prologue与Epilogue
3.4 分配局部变量
3.5 参数传递与返回值
3.6 返回值
3.7 递归函数
3.8 阅读材料
第4章 容量与速度的均衡
4.1 多层次储存
4.2 伟大的洞见:局部性原理
4.3 组相联式映射
4.4 查找缓存行
4.5 缓存行的状态
4.6 淘汰策略:LRU
4.7 缓存中的Load/Store
4.8 计数器分析
4.9 矩阵转置问题
4.10 线程级并行中的缓存一致性
4.11 阅读材料
第2部分 系统与应用的对话
第5章 虚拟与物理的内存
5.1 从源代码到进程
5.2 进程的虚拟地址空间
5.3 多级页表:虚拟地址映射
5.4 共享页:写时复制的诡计
5.5 页错误处理程序
5.6 按需分配/分页
5.7 页回收机制
5.8 反向映射:从PPN到PTE
5.9 TLB:缓存
5.10 阅读材料
第6章 同时运行多道程序
6.1 进程的幻觉
6.2 进程控制块
6.3 中断与异常
6.4 内核栈与Trapframe
6.5 切换虚拟内存
6.6 Fork系统调用
6.7 阅读材料
第3部分 精彩纷呈的程序
第7章 红黑树索引
7.1 从VMA开始
7.2 二叉搜索树
7.3 AVL树
7.4 红黑树的平衡性
7.5 红黑树的结构体
7.6 链表的插入与删除
7.7 红黑树的插入操作
7.8 红黑树的旋转
7.9 红黑树的删除操作
7.10 处理双黑结点
7.11 区间查询
7.12 红黑树索引程序
7.13 阅读材料
第8章 λ表达式求值器
8.1 λ表达式
8.2 抽象语法树
8.3 α归约与约束变量
8.4 β归约与二叉树操作
8.5 β范式与归约策略
8.6 实现λ表达式求值器
8.7 常见的λ表达式
8.8 递归函数与不动点组合子
8.9 阅读材料
附录A 常用的C语言标准库函数
附录B RISC-V指令释义
参考书目
展开