计算机系统概论(原书第2版)
Yale N.Patt拥有斯坦福大学电子工程博士学位,目前担任得克萨斯大学奥斯汀分校电子与计算机工程系教授。他是IEEE和ACM会士,曾因在高性能微处理器方面的成就而获得IEEE Emannuel R.Piore奖、IEEE/ACM Eckert-Mauchly奖和IEEE Wallace W.McDowell奖,在教学方面获得过ACM Karl V.Karlstrom杰出教育家奖、得克萨斯优秀教学奖等。
《计算机系统概论(原书第2版)》前半部分阐述了计算机底层结构,后半部分讲解了高级语言编程方法学。具体内容包括数据类型及其运算、数字逻辑、冯·诺伊曼模型、汇编语言、输入输出、TRAP程序和子程序、C语言编程等内容。
出版者的话
专家指导委员会
译者序
代序
第2版前言
第1版前言
第1章 欢迎阅读本书
1.1 我们的目标
1.2 怎么才能做到
1.3 两个反复出现的理念
1.3.1 抽象之理念
1.3.2 硬件与软件
1.4 计算机系统简述
1.5 两个非常重要的思想
1.6 计算机:通用计算设备
1.7 从问题描述到电子运转
1.7.1 问题的提出
1.7.2 算法
1.7.3 程序
1.7.4 指令集结构
1.7.5 微结构
1.7.6 逻辑电路
1.7.7 器件
1.7.8 小结
1.8 习题
第2章 bit、数据类型及其运算
2.1 bit和数据类型
2.1.1 bit——信息的基本单位
2.1.2 数据类型
2.2 整数数据类型
2.2.1 无符号整数
2.2.2 有符号整数
2.3 补码
2.4 二进制数与十进制数之间的转换
2.4.1 二进制数转换为十进制数
2.4.2 十进制数转换为二进制数
2.5 bit运算之一:算术运算
2.5.1 加法和减法
2.5.2 符号扩展
2.5.3 溢出
2.6 bit运算之二:逻辑运算
2.6.1 “与”运算
2.6.2 “或”运算
2.6.3 “非”运算
2.6.4 “异或”运算
2.7 其他类型
2.7.1 位矢量
2.7.2 浮点数
2.7.3 ASCⅡ码
2.7.4 十六进制计数法
2.8 习题
第3章 数字逻辑
3.1 MOS晶体管
3.2 逻辑门
3.2.1 非门
3.2.2 或门、或非门
3.2.3 与门、与非门
3.2.4 摩根定律
3.2.5 多输入门
3.3 组合逻辑
3.3.1 译码器
3.3.2 多路复用器
3.3.3 全加器
3.3.4 可编程逻辑阵列
3.3.5 逻辑完备性
3.4 存储单元
3.4.1 R-S锁存器
3.4.2 门控D锁存器
3.4.3 寄存器
3.5 内存的概念
3.5.1 寻址空间
3.5.2 寻址能力
3.5.3 例子:22x3内存
3.6 时序电路
3.6.1 组合密码锁
3.6.2 状态的概念
3.6.3 有限状态机
3.6.4 有限状态机的实现
3.7 LC-3计算机的数据通路
3.8 习题
第4章 冯·诺伊曼模型
4.1 基本部件
4.1.1 内存
4.1.2 处理单元
4.1.3 输入和输出单元
4.1.4 控制单元
4.2 LC-3:一台冯·诺伊曼机器
4.3 指令处理
4.3.1 指令
4.3.2 指令周期
4.4 改变执行顺序
4.5 停机操作
4.6 习题
第5章 LC-3结构
5.1 ISA概述
5.1.1 内存组织
5.1.2 寄存器
5.1.3 指令集
5.1.4 操作码
5.1.5 数据类型
5.1.6 寻址模式
5.1.7 条件码
5.2 操作指令
5.3 数据搬移指令
5.3.1 PC相对寻址
5.3.2 间接寻址
5.3.3 基址偏移寻址
5.3.4 立即数寻址
5.3.5 一个例子
5.4 控制指令
5.4.1 条件跳转指令
5.4.2 一个例子
5.4.3 循环控制的两种方法
5.4.4 例子:哨兵法数组求和
5.4.5 JMP指令
5.4.6 TRAP指令
5.5 例子:字符数统计
5.6 总结:数据通路(LC-3)
5.6.1 数据通路的基本部件
5.6.2 指令周期
5.7 习题
第6章 编程
6.1 问题求解
6.1.1 系统分解
6.1.2 三种结构:顺序、条件、循环
6.1.3 实现三种结构的LC-3指令
6.1.4 回顾字符数统计例子
6.2 调试
6.2.1 调试的基本操作
6.2.2 交互式调试器的使用
6.3 习题
第7章 汇编语言
7.1 汇编语言编程——更上一层
7.2 一个汇编程序
7.2.1 指令
7.2.2 伪操作
7.2.3 例子:字符数统计程序
7.3 汇编过程
7.3.1 概述
7.3.2 两遍扫描
7.3.3 第1遍:创建符号表
7.3.4 第2遍:生成机器语言程序
7.4 相关知识
7.4.1 可执行映像
7.4.2 多目标文件
7.5 习题
第8章 输入/输出
8.1 输入/输出的基本概念
8.1.1 设备寄存器
8.1.2 内存映射I/O与专用I/O指令
8.1.3 异步I/O与同步I/O
8.1.4 中断驱动与轮询
8.2 键盘输入
8.2.1 基本输入寄存器
8.2.2 基本输入服务程序
8.2.3 内存映射输入的实现
8.3 显示器输出
8.3.1 基本输出寄存器(DDR和DSR)
8.3.2 基本输出服务程序
8.3.3 内存映射输出的实现
8.3.4 例子:键盘回显
8.4 一个更复杂的输入程序
8.5 中断驱动I/O
8.5.1 什么是中断驱动I/O
8.5.2 为什么要引入中断驱动I/O
8.5.3 中断信号的产生
8.6 内存映射I/O的回顾
8.7 习题
第9章 TRAP程序和子程序
9.1 LC-3 TRAP程序
9.1.1 概述
9.1.2 TRAP机制
9.1.3 TRAP指令
9.1.4 完整机制
9.1.5 I/O中断处理程序
9.1.6 HALT中断程序
9.1.7 寄存器内容的保存和恢复
9.2 子程序
9.2.1 调用/返回机制
9.2.2 JSR(R)指令
9.2.3 字符输入的TRAP程序
9.2.4 PUTS:写字符串
9.2.5 库程序
9.3 习题
第10章 栈
10.1 栈的基本结构
10.1.1 抽象数据类型:栈
10.1.2 两个实现例子
10.1.3 内存中的实现
10.1.4 小结
10.2 中断驱动I/O(第二部分)
10.2.1 启动和执行
10.2.2 中断返回
10.2.3 例子:嵌套中断
10.3 基于栈的算术运算
10.3.1 栈的临时存储作用
10.3.2 例子:算术表达式
10.3.3 加、乘和取反
10.4 数据类型转换
10.4.1 一个错误结果的例子:2+3=e
10.4.2 ASCⅡ/二进制转换
10.4.3 二进制/ASCⅡ转换
10.5 模拟计算器
10.6 习题
第11章 C语言编程概述
11.1 我们的目标
11.2 软硬件结合
11.3 高级语言翻译
11.3.1 解释执行
11.3.2 编译执行
11.3.3 两种方法的优缺点
11.4 C编程语言
11.5 一个简单的C程序
11.5.1 main函数
11.5.2 编程风格
11.5.3 C预处理器
11.5.4 输入和输出
11.6 小结
11.7 习题
第12章 变量和运算符
12.1 概述
12.2 变量
12.2.1 三种基本数据类型:int、char、double
12.2.2 标识符的选择
12.2.3 局部变量和全局变量
12.2.4 更多的例子
12.3 运算符
12.3.1 表达式和语句
12.3.2 赋值运算符
12.3.3 算术运算符
12.3.4 算术优先级
12.3.5 位运算符
12.3.6 关系运算符
12.3.7 逻辑运算符
12.3.8 递增/递减运算符
12.3.9 运算符混合表达式
12.4 基于运算符的问题求解
12.5 编译器处理
12.5.1 符号表
12.5.2 变量的空间分配
12.5.3 完整的例子
12.6 补充话题
12.6.1 三种基本类型的变种
12.6.2 文字常量、常量和符号值
12.6.3 存储类型
12.6.4 更多的C运算符
12.7 小结
12.8 习题
第13章 控制结构
13.1 概述
13.2 条件结构
13.2.1 if语句
13.2.2 ifelse语句
13.3 循环结构
13.3.1 while语句
13.3.2 for语句
13.3ac电脑的选择 25
2.3.1 最小系统需求 25
2.3.2 选择操作系统 26
2.3.3 了解电脑配件 26
2.4 电脑配件的选择 29
2.4.1 硬盘的选择 29
2?E-mail地址
13.5 其他C语言控制结构
13.5.1 switch语句
13.5.2 break和continue语句
13.5.3 简单计算器的例子
13.6 小结
13.7 习题
第14章 函数
14.1 概述
14.2 C语言中的函数
14.2.1 带参数的函数
14.2.2 求解圆面积
14.3 C语言中函数的实现
14.3.1 运行时栈
14.3.2 实现机制
14.3.3 汇总
14.4 问题求解
14.4.1 例1:大小写转换
14.4.2 例2:毕达哥拉斯三角形
14.5 小结
14.6 习题
第15章 测试与调试技术
15.1 概述
15.2 错误类型
15.2.1 语法错误
15.2.2 语义错误
15.2.3 算法错误
15.3 测试
15.3.1 黑盒测试
15.3.2 白盒测试
15.4 调试
15.4.1 特定方法
15.4.2 源码级调试工具
15.4.3 断点
15.5 正确的编程方法
15.5.1 明确规格说明
15.5.2 模块化设计
15.5.3 预防错误式编程
15.6 小结
15.7 习题
第16章 指针和数组
16.1 概述
16.2 指针
16.2.1 声明指针变量
16.2.2 指针运算符
16.2.3 指针传递一个引用
16.2.4 空指针
16.2.5 语法
16.2.6 指针例程
16.3 数组
16.3.1 数组声明
16.3.2 数组应用
16.3.3 数组参数
16.3.4 C语言的字符串
16.3.5 数组与指针的关系
16.3.6 实例:插入排序
16.3.7 C语言数组的不足
16.4 小结
16.5 习题
第17章 递归
17.1 概述
17.2 什么是递归
17.3 递归与循环
17.4 汉诺塔
17.5 斐波纳契数列
17.6 二分查找
17.7 整数转换为ASCⅡ字符串
17.8 小结
17.9 习题
笫18章 C语言中的I/O
18.1 概述
18.2 C标准库函数
18.3 字符I/O操作
18.3.1 I/O流
18.3.2 putchar函数
18.3.3 getchai函数
18.3.4 缓冲I/O
18.4 格式化I/O
18.4.1 printf
18.4.2 scanf
18.4.3 可变长参数
18.5 文件I/O
18.6 小结
18.7 习题
第19章 数据结构
19.1 概述
19.2 结构体
19.2.1 typedef
19.2.2 结构体在C中的实现
19.3 结构体数组
19.4 动态内存分配
19.5 链表
19.6 小结
19.7 习题
附录A LC-3指令集结构
附录B 从LC-3到x86
附录C LC-3的微结构
附录D C编程语言
附录E 常用表
附录F 部分习题答案
^ 收 起
专家指导委员会
译者序
代序
第2版前言
第1版前言
第1章 欢迎阅读本书
1.1 我们的目标
1.2 怎么才能做到
1.3 两个反复出现的理念
1.3.1 抽象之理念
1.3.2 硬件与软件
1.4 计算机系统简述
1.5 两个非常重要的思想
1.6 计算机:通用计算设备
1.7 从问题描述到电子运转
1.7.1 问题的提出
1.7.2 算法
1.7.3 程序
1.7.4 指令集结构
1.7.5 微结构
1.7.6 逻辑电路
1.7.7 器件
1.7.8 小结
1.8 习题
第2章 bit、数据类型及其运算
2.1 bit和数据类型
2.1.1 bit——信息的基本单位
2.1.2 数据类型
2.2 整数数据类型
2.2.1 无符号整数
2.2.2 有符号整数
2.3 补码
2.4 二进制数与十进制数之间的转换
2.4.1 二进制数转换为十进制数
2.4.2 十进制数转换为二进制数
2.5 bit运算之一:算术运算
2.5.1 加法和减法
2.5.2 符号扩展
2.5.3 溢出
2.6 bit运算之二:逻辑运算
2.6.1 “与”运算
2.6.2 “或”运算
2.6.3 “非”运算
2.6.4 “异或”运算
2.7 其他类型
2.7.1 位矢量
2.7.2 浮点数
2.7.3 ASCⅡ码
2.7.4 十六进制计数法
2.8 习题
第3章 数字逻辑
3.1 MOS晶体管
3.2 逻辑门
3.2.1 非门
3.2.2 或门、或非门
3.2.3 与门、与非门
3.2.4 摩根定律
3.2.5 多输入门
3.3 组合逻辑
3.3.1 译码器
3.3.2 多路复用器
3.3.3 全加器
3.3.4 可编程逻辑阵列
3.3.5 逻辑完备性
3.4 存储单元
3.4.1 R-S锁存器
3.4.2 门控D锁存器
3.4.3 寄存器
3.5 内存的概念
3.5.1 寻址空间
3.5.2 寻址能力
3.5.3 例子:22x3内存
3.6 时序电路
3.6.1 组合密码锁
3.6.2 状态的概念
3.6.3 有限状态机
3.6.4 有限状态机的实现
3.7 LC-3计算机的数据通路
3.8 习题
第4章 冯·诺伊曼模型
4.1 基本部件
4.1.1 内存
4.1.2 处理单元
4.1.3 输入和输出单元
4.1.4 控制单元
4.2 LC-3:一台冯·诺伊曼机器
4.3 指令处理
4.3.1 指令
4.3.2 指令周期
4.4 改变执行顺序
4.5 停机操作
4.6 习题
第5章 LC-3结构
5.1 ISA概述
5.1.1 内存组织
5.1.2 寄存器
5.1.3 指令集
5.1.4 操作码
5.1.5 数据类型
5.1.6 寻址模式
5.1.7 条件码
5.2 操作指令
5.3 数据搬移指令
5.3.1 PC相对寻址
5.3.2 间接寻址
5.3.3 基址偏移寻址
5.3.4 立即数寻址
5.3.5 一个例子
5.4 控制指令
5.4.1 条件跳转指令
5.4.2 一个例子
5.4.3 循环控制的两种方法
5.4.4 例子:哨兵法数组求和
5.4.5 JMP指令
5.4.6 TRAP指令
5.5 例子:字符数统计
5.6 总结:数据通路(LC-3)
5.6.1 数据通路的基本部件
5.6.2 指令周期
5.7 习题
第6章 编程
6.1 问题求解
6.1.1 系统分解
6.1.2 三种结构:顺序、条件、循环
6.1.3 实现三种结构的LC-3指令
6.1.4 回顾字符数统计例子
6.2 调试
6.2.1 调试的基本操作
6.2.2 交互式调试器的使用
6.3 习题
第7章 汇编语言
7.1 汇编语言编程——更上一层
7.2 一个汇编程序
7.2.1 指令
7.2.2 伪操作
7.2.3 例子:字符数统计程序
7.3 汇编过程
7.3.1 概述
7.3.2 两遍扫描
7.3.3 第1遍:创建符号表
7.3.4 第2遍:生成机器语言程序
7.4 相关知识
7.4.1 可执行映像
7.4.2 多目标文件
7.5 习题
第8章 输入/输出
8.1 输入/输出的基本概念
8.1.1 设备寄存器
8.1.2 内存映射I/O与专用I/O指令
8.1.3 异步I/O与同步I/O
8.1.4 中断驱动与轮询
8.2 键盘输入
8.2.1 基本输入寄存器
8.2.2 基本输入服务程序
8.2.3 内存映射输入的实现
8.3 显示器输出
8.3.1 基本输出寄存器(DDR和DSR)
8.3.2 基本输出服务程序
8.3.3 内存映射输出的实现
8.3.4 例子:键盘回显
8.4 一个更复杂的输入程序
8.5 中断驱动I/O
8.5.1 什么是中断驱动I/O
8.5.2 为什么要引入中断驱动I/O
8.5.3 中断信号的产生
8.6 内存映射I/O的回顾
8.7 习题
第9章 TRAP程序和子程序
9.1 LC-3 TRAP程序
9.1.1 概述
9.1.2 TRAP机制
9.1.3 TRAP指令
9.1.4 完整机制
9.1.5 I/O中断处理程序
9.1.6 HALT中断程序
9.1.7 寄存器内容的保存和恢复
9.2 子程序
9.2.1 调用/返回机制
9.2.2 JSR(R)指令
9.2.3 字符输入的TRAP程序
9.2.4 PUTS:写字符串
9.2.5 库程序
9.3 习题
第10章 栈
10.1 栈的基本结构
10.1.1 抽象数据类型:栈
10.1.2 两个实现例子
10.1.3 内存中的实现
10.1.4 小结
10.2 中断驱动I/O(第二部分)
10.2.1 启动和执行
10.2.2 中断返回
10.2.3 例子:嵌套中断
10.3 基于栈的算术运算
10.3.1 栈的临时存储作用
10.3.2 例子:算术表达式
10.3.3 加、乘和取反
10.4 数据类型转换
10.4.1 一个错误结果的例子:2+3=e
10.4.2 ASCⅡ/二进制转换
10.4.3 二进制/ASCⅡ转换
10.5 模拟计算器
10.6 习题
第11章 C语言编程概述
11.1 我们的目标
11.2 软硬件结合
11.3 高级语言翻译
11.3.1 解释执行
11.3.2 编译执行
11.3.3 两种方法的优缺点
11.4 C编程语言
11.5 一个简单的C程序
11.5.1 main函数
11.5.2 编程风格
11.5.3 C预处理器
11.5.4 输入和输出
11.6 小结
11.7 习题
第12章 变量和运算符
12.1 概述
12.2 变量
12.2.1 三种基本数据类型:int、char、double
12.2.2 标识符的选择
12.2.3 局部变量和全局变量
12.2.4 更多的例子
12.3 运算符
12.3.1 表达式和语句
12.3.2 赋值运算符
12.3.3 算术运算符
12.3.4 算术优先级
12.3.5 位运算符
12.3.6 关系运算符
12.3.7 逻辑运算符
12.3.8 递增/递减运算符
12.3.9 运算符混合表达式
12.4 基于运算符的问题求解
12.5 编译器处理
12.5.1 符号表
12.5.2 变量的空间分配
12.5.3 完整的例子
12.6 补充话题
12.6.1 三种基本类型的变种
12.6.2 文字常量、常量和符号值
12.6.3 存储类型
12.6.4 更多的C运算符
12.7 小结
12.8 习题
第13章 控制结构
13.1 概述
13.2 条件结构
13.2.1 if语句
13.2.2 ifelse语句
13.3 循环结构
13.3.1 while语句
13.3.2 for语句
13.3ac电脑的选择 25
2.3.1 最小系统需求 25
2.3.2 选择操作系统 26
2.3.3 了解电脑配件 26
2.4 电脑配件的选择 29
2.4.1 硬盘的选择 29
2?E-mail地址
13.5 其他C语言控制结构
13.5.1 switch语句
13.5.2 break和continue语句
13.5.3 简单计算器的例子
13.6 小结
13.7 习题
第14章 函数
14.1 概述
14.2 C语言中的函数
14.2.1 带参数的函数
14.2.2 求解圆面积
14.3 C语言中函数的实现
14.3.1 运行时栈
14.3.2 实现机制
14.3.3 汇总
14.4 问题求解
14.4.1 例1:大小写转换
14.4.2 例2:毕达哥拉斯三角形
14.5 小结
14.6 习题
第15章 测试与调试技术
15.1 概述
15.2 错误类型
15.2.1 语法错误
15.2.2 语义错误
15.2.3 算法错误
15.3 测试
15.3.1 黑盒测试
15.3.2 白盒测试
15.4 调试
15.4.1 特定方法
15.4.2 源码级调试工具
15.4.3 断点
15.5 正确的编程方法
15.5.1 明确规格说明
15.5.2 模块化设计
15.5.3 预防错误式编程
15.6 小结
15.7 习题
第16章 指针和数组
16.1 概述
16.2 指针
16.2.1 声明指针变量
16.2.2 指针运算符
16.2.3 指针传递一个引用
16.2.4 空指针
16.2.5 语法
16.2.6 指针例程
16.3 数组
16.3.1 数组声明
16.3.2 数组应用
16.3.3 数组参数
16.3.4 C语言的字符串
16.3.5 数组与指针的关系
16.3.6 实例:插入排序
16.3.7 C语言数组的不足
16.4 小结
16.5 习题
第17章 递归
17.1 概述
17.2 什么是递归
17.3 递归与循环
17.4 汉诺塔
17.5 斐波纳契数列
17.6 二分查找
17.7 整数转换为ASCⅡ字符串
17.8 小结
17.9 习题
笫18章 C语言中的I/O
18.1 概述
18.2 C标准库函数
18.3 字符I/O操作
18.3.1 I/O流
18.3.2 putchar函数
18.3.3 getchai函数
18.3.4 缓冲I/O
18.4 格式化I/O
18.4.1 printf
18.4.2 scanf
18.4.3 可变长参数
18.5 文件I/O
18.6 小结
18.7 习题
第19章 数据结构
19.1 概述
19.2 结构体
19.2.1 typedef
19.2.2 结构体在C中的实现
19.3 结构体数组
19.4 动态内存分配
19.5 链表
19.6 小结
19.7 习题
附录A LC-3指令集结构
附录B 从LC-3到x86
附录C LC-3的微结构
附录D C编程语言
附录E 常用表
附录F 部分习题答案
^ 收 起
Yale N.Patt拥有斯坦福大学电子工程博士学位,目前担任得克萨斯大学奥斯汀分校电子与计算机工程系教授。他是IEEE和ACM会士,曾因在高性能微处理器方面的成就而获得IEEE Emannuel R.Piore奖、IEEE/ACM Eckert-Mauchly奖和IEEE Wallace W.McDowell奖,在教学方面获得过ACM Karl V.Karlstrom杰出教育家奖、得克萨斯优秀教学奖等。
《计算机系统概论(原书第2版)》前半部分阐述了计算机底层结构,后半部分讲解了高级语言编程方法学。具体内容包括数据类型及其运算、数字逻辑、冯·诺伊曼模型、汇编语言、输入输出、TRAP程序和子程序、C语言编程等内容。
比价列表