出版者的话
译者序
前言
第一部分 应用层(第7层)
第1章 计算机系统 2
1.1 抽象层次 2
1.1.1 艺术中的抽象 3
1.1.2 文档中的抽象 4
1.1.3 机构中的抽象 5
1.1.4 机器中的抽象 6
1.1.5 计算机系统中的抽象 6
1.2 硬件 7
1.2.1 中央处理单元 8
1.2.2 主存储器 9
1.2.3 磁盘 10
1.3 软件 11
1.3.1 操作系统 12
1.3.2 软件分析与设计 13
1.4 数字信息 14
1.4.1 空间量化 14
1.4.2 时间量化 16
1.4.3 快速响应码 18
1.4.4 图像 21
1.5 数据库系统 27
1.5.1 关系 27
1.5.2 查询 28
1.5.3 语言结构 30
本章小结 31
练习 32
第二部分 高级语言层(第6层)
第2章 C 36
2.1 变量 36
2.1.1 C编译器 36
2.1.2 机器无关性 37
2.1.3 C的内存模型 37
2.1.4 全局变量和赋值语句 38
2.1.5 局部变量 40
2.2 控制流 42
2.2.1 if/else语句 42
2.2.2 switch语句 43
2.2.3 while循环 44
2.2.4 do循环 44
2.2.5 数组和for循环 45
2.3 函数 46
2.3.1 空函数和传值调用的参数 46
2.3.2 函数的例子 48
2.3.3 传引用调用的参数 48
2.4 递归 51
2.4.1 阶乘函数 52
2.4.2 递归的思考方式 55
2.4.3 递归加法 55
2.4.4 二项式系数函数 57
2.4.5 逆转数组元素顺序 61
2.4.6 汉诺塔 61
2.4.7 相互递归 63
2.4.8 递归的成本 64
2.5 动态内存分配 65
2.5.1 指针 65
2.5.2 结构 67
2.5.3 链式数据结构 68
本章小结 69
练习 70
编程题 71
第三部分 指令集架构层(第3层)
第3章 信息的表示 76
3.1 无符号二进制表示 76
3.1.1 二进制存储 76
3.1.2 整数 77
3.1.3 基数转换 78
3.1.4 无符号整数的范围 80
3.1.5 无符号加法 80
3.1.6 进位位 81
3.2 二进制补码表示 81
3.2.1 补码的表数范围 83
3.2.2 基数转换 84
3.2.3 数轴 85
3.2.4 溢出位 86
3.2.5 负数和零位 87
3.3 二进制运算 88
3.3.1 逻辑运算符 88
3.3.2 寄存器传送语言 89
3.3.3 算术运算符 90
3.3.4 循环移位运算符 91
3.4 十六进制与字符表示 92
3.4.1 十六进制 92
3.4.2 基数转换 92
3.4.3 ASCII字符 94
3.4.4 Unicode字符 97
3.5 浮点数表示 100
3.5.1 二进制小数 100
3.5.2 余码表示 102
3.5.3 隐藏位 103
3.5.4 特殊值 104
3.5.5 IEEE 754浮点数标准 108
3.6 模型 109
本章小结 111
练习 111
编程题 117
第4章 计算机体系结构 120
4.1 硬件 120
4.1.1 中央处理单元 120
4.1.2 主存储器 121
4.1.3 输入/输出设备 122
4.1.4 数据和控制 123
4.1.5 指令格式 123
4.2 直接寻址 126
4.2.1 停止指令 126
4.2.2 字装入指令 126
4.2.3 字存储指令 127
4.2.4 加法指令 128
4.2.5 减法指令 128
4.2.6 与和或指令 129
4.2.7 按位取反和取负指令 130
4.2.8 字节装入和字节存储指令 131
4.2.9 输入和输出设备 132
4.2.10 大端顺序和小端顺序 133
4.3 冯·诺依曼机器 134
4.3.1 冯·诺依曼执行周期 134
4.3.2 一个字符输出程序 135
4.3.3 冯·诺依曼漏洞 138
4.3.4 一个字符输入程序 139
4.3.5 十进制转换为ASCII 139
4.3.6 一个自我修改程序 140
4.4 ISA3层的编程 142
4.4.1 只读存储器 143
4.4.2 Pep/9操作系统 144
4.4.3 使用Pep/9系统 145
本章小结 146
练习 146
编程题 148
第四部分 汇编层(第5层)
第5章 汇编语言 150
5.1 汇编程序 150
5.1.1 指令助记符 150
5.1.2 伪操作 152
5.1.3 .ASCII和.END伪操作 153
5.1.4 汇编器 154
5.1.5 .BLOCK伪操作 155
5.1.6 .WORD和.BYTE伪操作 155
5.1.7 使用Pep/9汇编器 156
5.1.8 交叉汇编器 157
5.2 立即数寻址和陷阱指令 158
5.2.1 立即数寻址 158
5.2.2 DECI、DECO和BR指令 159
5.2.3 STRO指令 161
5.2.4 解释位模式:HEXO指令 162
5.2.5 反汇编器 163
5.3 符号 165
5.3.1 带符号的程序 165
5.3.2 一个冯·诺依曼示例 166
5.4 从HOL6层翻译 168
5.4.1 Printf()函数 169
5.4.2 变量和类型 170
5.4.3 全局变量和赋值语句 171
5.4.4 类型兼容 174
5.4.5 Pep/9符号跟踪器 175
5.4.6 算术移位和循环移位指令 175
5.4.7 常量和.EQUATE 176
5.4.8 指令与数据的放置 178
本章小结 179
练习 180
编程题 182
第6章 编译到汇编层 185
6.1 栈寻址和局部变量 185
6.1.1 栈相对寻址 185
6.1.2 访问运行时栈 186
6.1.3 局部变量 188
6.2 分支指令和控制流 190
6.2.1 翻译if语句 191
6.2.2 优化编译器 192
6.2.3 翻译if/else语句 192
6.2.4 翻译while循环 194
6.2.5 翻译do循环 195
6.2.6 翻译for循环 197
6.2.7 面条代码 198
6.2.8 早期语言的控制流 199
6.2.9 结构化编程定律 200
6.2.10 goto争论 200
6.3 函数
展开