《计算机系统概论 原书第2版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)派特,派特尔著;梁阿磊,蒋兴昌,林凌译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2007
  • ISBN:9787111215561
  • 页数:404 页
图书介绍:本书是计算科学的入门介绍教材,全书以自底向上方法帮助学生理解技术计算之原理,使学生在掌握了计算机底层工作的原理机制之后,能够更加从容地解决以后可能面临的新问题,包括高级编程语言方面。而且,这些学生学习编程语言的方法是“理解式”而不是“记忆式”的,因为一切动作都是明明白白的。

第1章 欢迎阅读本书 1

1.1 我们的目标 1

1.2 怎么才能做到 1

1.3 两个反复出现的理念 2

1.3.1 抽象之理念 2

1.3.2 硬件与软件 3

1.4 计算机系统简述 4

1.5 两个非常重要的思想 6

1.6 计算机:通用计算设备 6

1.7 从问题描述到电子运转 8

1.7.1 问题的提出 8

1.7.2 算法 8

1.7.3 程序 9

1.7.4 指令集结构 9

1.7.5 微结构 10

1.7.6 逻辑电路 10

1.7.7 器件 10

1.7.8 小结 10

1.8 习题 11

第2章 bit、数据类型及其运算 14

2.1 bit和数据类型 14

2.1.1 bit——信息的基本单位 14

2.1.2 数据类型 14

2.2 整数数据类型 15

2.2.1 无符号整数 15

2.2.2 有符号整数 15

2.3 补码 16

2.4 二进制数与十进制数之间的转换 18

2.4.1 二进制数转换为十进制数 18

2.4.2 十进制数转换为二进制数 19

2.5 bit运算之一:算术运算 20

2.5.1 加法和减法 20

2.5.2 符号扩展 20

2.5.3 溢出 21

2.6 bit运算之二:逻辑运算 22

2.6.1 “与”运算 22

2.6.2 “或”运算 23

2.6.3 “非”运算 24

2.6.4 “异或”运算 24

2.7 其他类型 24

2.7.1 位矢量 25

2.7.2 浮点数 25

2.7.3 ASCII码 27

2.7.4 十六进制计数法 28

2.8 习题 29

第3章 数字逻辑 34

3.1 MOS晶体管 34

3.2 逻辑门 35

3.2.1 非门 35

3.2.2 或门、或非门 36

3.2.3 与门、与非门 37

3.2.4 摩根定律 38

3.2.5 多输入门 39

3.3 组合逻辑 39

3.3.1 译码器 40

3.3.2 多路复用器 40

3.3.3 全加器 41

3.3.4 可编程逻辑阵列 43

3.3.5 逻辑完备性 43

3.4 存储单元 44

3.4.1 R-S锁存器 44

3.4.2 门控D锁存器 45

3.4.3 寄存器 45

3.5 内存的概念 46

3.5.1 寻址空间 46

3.5.2 寻址能力 46

3.5.3 例子:22×3内存 47

3.6 时序电路 48

3.6.1 组合密码锁 49

3.6.2 状态的概念 50

3.6.3 有限状态机 51

3.6.4 有限状态机的实现 53

3.7 LC-3计算机的数据通路 55

3.8 习题 56

第4章 冯·诺伊曼模型 65

4.1 基本部件 65

4.1.1 内存 66

4.1.2 处理单元 66

4.1.3 输入和输出单元 67

4.1.4 控制单元 67

4.2 LC-3:一台冯·诺伊曼机器 67

4.3 指令处理 69

4.3.1 指令 69

4.3.2 指令周期 70

4.4 改变执行顺序 72

4.5 停机操作 74

4.6 习题 75

第5章 LC-3结构 77

5.1 ISA概述 77

5.1.1 内存组织 77

5.1.2 寄存器 77

5.1.3 指令集 78

5.1.4 操作码 78

5.1.5 数据类型 80

5.1.6 寻址模式 80

5.1.7 条件码 80

5.2 操作指令 80

5.3 数据搬移指令 83

5.3.1 PC相对寻址 83

5.3.2 间接寻址 84

5.3.3 基址偏移寻址 85

5.3.4 立即数寻址 86

5.3.5 一个例子 87

5.4 控制指令 88

5.4.1 条件跳转指令 88

5.4.2 一个例子 90

5.4.3 循环控制的两种方法 91

5.4.4 例子:哨兵法数组求和 92

5.4.5 JMP指令 92

5.4.6 TRAP指令 93

5.5 例子:字符数统计 93

5.6 总结:数据通路(LC-3) 96

5.6.1 数据通路的基本部件 97

5.6.2 指令周期 98

5.7 习题 98

第6章 编程 104

6.1 问题求解 104

6.1.1 系统分解 104

6.1.2 三种结构:顺序、条件、循环 104

6.1.3 实现三种结构的LC-3指令 105

6.1.4 回顾字符数统计例子 106

6.2 调试 109

6.2.1 调试的基本操作 110

6.2.2 交互式调试器的使用 111

6.3 习题 116

第7章 汇编语言 120

7.1 汇编语言编程——更上一层 120

7.2 一个汇编程序 120

7.2.1 指令 121

7.2.2 伪操作 123

7.2.3 例子:字符数统计程序 124

7.3 汇编过程 125

7.3.1 概述 125

7.3.2 两遍扫描 125

7.3.3 第1遍:创建符号表 126

7.3.4 第2遍:生成机器语言程序 126

7.4 相关知识 127

7.4.1 可执行映像 128

7.4.2 多目标文件 128

7.5 习题 129

第8章 输入/输出 134

8.1 输入/输出的基本概念 134

8.1.1 设备寄存器 134

8.1.2 内存映射I/O与专用I/O指令 134

8.1.3 异步I/O与同步I/O 135

8.1.4 中断驱动与轮询 135

8.2 键盘输入 136

8.2.1 基本输入寄存器 136

8.2.2 基本输入服务程序 136

8.2.3 内存映射输入的实现 136

8.3 显示器输出 137

8.3.1 基本输出寄存器(DDR和DSR) 137

8.3.2 基本输出服务程序 137

8.3.3 内存映射输出的实现 138

8.3.4 例子:键盘回显 139

8.4 一个更复杂的输入程序 139

8.5 中断驱动I/O 140

8.5.1 什么是中断驱动11O 140

8.5.2 为什么要引入中断驱动I/O 141

8.5.3 中断信号的产生 142

8.6 内存映射I/O的回顾 144

8.7 习题 144

第9章 TRAP程序和子程序 146

9.1 LC-3 TRAP程序 146

9.1.1 概述 146

9.1.2 TRAP机制 146

9.1.3 TRAP指令 147

9.1.4 完整机制 147

9.1.5 I/O中断处理程序 149

9.1.6 HALT中断程序 150

9.1.7 寄存器内容的保存和恢复 151

9.2 子程序 152

9.2.1 调用/返回机制 153

9.2.2 JSR(R)指令 154

9.2.3 字符输入的TRAP程序 154

9.2.4 PUTS:写字符串 156

9.2.5 库程序 157

9.3 习题 160

第10章 栈 166

10.1 栈的基本结构 166

10.1.1 抽象数据类型:栈 166

10.1.2 两个实现例子 166

10.1.3 内存中的实现 167

10.1.4 小结 170

10.2 中断驱动I/O(第二部分) 171

10.2.1 启动和执行 171

10.2.2 中断返回 173

10.2.3 例子:嵌套中断 173

10.3 基于栈的算术运算 175

10.3.1 栈的临时存储作用 175

10.3.2 例子:算术表达式 175

10.3.3 加、乘和取反 176

10.4 数据类型转换 180

10.4.1 一个错误结果的例子:2+3=e 181

10.4.2 ASCII/二进制转换 181

10.4.3 二进制/ASCII转换 183

10.5 模拟计算器 184

10.6 习题 188

第11章 C语言编程概述 192

11.1 我们的目标 192

11.2 软硬件结合 192

11.3 高级语言翻译 194

11.3.1 解释执行 194

11.3.2 编译执行 194

11.3.3 两种方法的优缺点 194

11.4 C编程语言 195

11.5 一个简单的C程序 197

11.5.1 main函数 198

11.5.2 编程风格 198

11.5.3 C预处理器 199

11.5.4 输入和输出 200

11.6 小结 202

11.7 习题 202

第12章 变量和运算符 204

12.1 概述 204

12.2 变量 204

12.2.1 三种基本数据类型:int、char、double 204

12.2.2 标识符的选择 206

12.2.3 局部变量和全局变量 206

12.2.4 更多的例子 208

12.3 运算符 208

12.3.1 表达式和语句 209

12.3.2 赋值运算符 209

12.3.3 算术运算符 210

12.3.4 算术优先级 210

12.3.5 位运算符 211

12.3.6 关系运算符 212

12.3.7 逻辑运算符 213

12.3.8 递增/递减运算符 214

12.3.9 运算符混合表达式 215

12.4 基于运算符的问题求解 215

12.5 编译器处理 217

12.5.1 符号表 217

12.5.2 变量的空间分配 218

12.5.3 完整的例子 219

12.6 补充话题 221

12.6.1 三种基本类型的变种 221

12.6.2 文字常量、常量和符号值 222

12.6.3 存储类型 223

12.6.4 更多的C运算符 223

12.7 小结 224

12.8 习题 224

第13章 控制结构 227

13.1 概述 227

13.2 条件结构 227

13.2.1 if语句 227

13.2.2 if-else语句 229

13.3 循环结构 231

13.3.1 while语句 231

13.3.2 for语句 233

13.3.3 do-while循环 236

13.4 基于控制结构的问题求解 236

13.4.1 问题1:π的近似值求解 236

13.4.2 问题2:找出100以内的质数 239

13.4.3 问题3:分析一个E-mail地址 241

13.5 其他C语言控制结构 243

13.5.1 switch语句 243

13.5.2 break和continue语句 244

13.5.3 简单计算器的例子 244

13.6 小结 245

13.7 习题 246

第14章 函数 250

14.1 概述 250

14.2 C语言中的函数 250

14.2.1 带参数的函数 251

14.2.2 求解圆面积 253

14.3 C语言中函数的实现 254

14.3.1 运行时栈 254

14.3.2 实现机制 254

14.3.3 汇总 259

14.4 问题求解 260

14.4.1 例1:大小写转换 260

14.4.2 例2:毕达哥拉斯三角形 262

14.5 小结 263

14.6 习题 263

第15章 测试与调试技术 268

15.1 概述 268

15.2 错误类型 269

15.2.1 语法错误 269

15.2.2 语义错误 269

15.2.3 算法错误 270

15.3 测试 271

15.3.1 黑盒测试 271

15.3.2 白盒测试 272

15.4 调试 272

15.4.1 特定方法 273

15.4.2 源码级调试工具 273

15.4.3 断点 273

15.5 正确的编程方法 274

15.5.1 明确规格说明 274

15.5.2 模块化设计 275

15.5.3 预防错误式编程 275

15.6 小结 276

15.7 习题 276

第16章 指针和数组 280

16.1 概述 280

16.2 指针 280

16.2.1 声明指针变量 281

16.2.2 指针运算符 282

16.2.3 指针传递一个引用 283

16.2.4 空指针 284

16.2.5 语法 284

16.2.6 指针例程 285

16.3 数组 286

16.3.1 数组声明 286

16.3.2 数组应用 287

16.3.3 数组参数 289

16.3.4 C语言的字符串 290

16.3.5 数组与指针的关系 293

16.3.6 实例:插入排序 293

16.3.7 C语言数组的不足 295

16.4 小结 296

16.5 习题 296

第17章 递归 299

17.1 概述 299

17.2 什么是递归 299

17.3 递归与循环 300

17.4 汉诺塔 301

17.5 斐波纳契数列 304

17.6 二分查找 307

17.7 整数转换为ASCII字符串 309

17.8 小结 310

17.9 习题 310

第18章 C语言中的I/O 315

18.1 概述 315

18.2 C标准库函数 315

18.3 字符I/O操作 315

18.3.1 I/O流 316

18.3.2 putchar函数 316

18.3.3 getchar函数 316

18.3.4 缓冲I/O 316

18.4 格式化I/O 317

18.4.1 printf 317

18.4.2 scanf 318

18.4.3 可变长参数 320

18.5 文件I/O 321

18.6 小结 322

18.7 习题 323

第19章 数据结构 324

19.1 概述 324

19.2 结构体 324

19.2.1 typedef 326

19.2.2 结构体在C中的实现 326

19.3 结构体数组 327

19.4 动态内存分配 328

19.5 链表 330

19.6 小结 336

19.7 习题 336

附录A LC-3指令集结构 339

附录B 从LC-3到x86 353

附录C LC-3的微结构 367

附录D C编程语言 383

附录E 常用表 403