计算机
类型
可以朗读
语音朗读
267千字
字数
2022-12-01
发行日期
展开全部
主编推荐语
深入软件开发原理,掌握匠艺模型,提高编程技能,学习计算机组织和机器指令。
内容简介
本书第一版深入介绍了从开发方法、生产力到面向对象的设计需求和系统文档的方方面面。通过本书,你将学习到:为什么遵循软件匠艺模型可以让你做到 ;如何利用可追溯性来加强文档的一致性;如何通过用例分析来创建自己的UML需求;如何利用IEEE文档标准开发出 好的软件。通过对高质量软件开发中技能、态度和道德方面的深入讲解,本书揭示了如何将工程原理应用于编程的正确方法。与备受推崇的第一版一样,《深入理解计算机》第二版涵盖了机器组织和计算机科学主题,例如CPU,机器体系结构,内存和缓存组织,I / O和外围设备,以及机器指令的解码和执行如何影响软件性能。 此版本已更新,以涵盖64位计算机、较新的外围设备、较大的内存系统、大规模SSD和较新的CPU(如个人计算机和平板电脑中使用的CPU)。
目录
- 版权信息
- 内容简介
- 推荐序 给自己从底层重修的胆量
- 推荐序2
- 译者序
- 关于作者
- 关于技术评审
- 致谢
- 1 编写卓越代码须知
- 1.1 《编程卓越之道》系列
- 1.2 本书涵盖的主题
- 1.3 阅读本书的前提
- 1.4 卓越代码的特征
- 1.5 本书要求的环境
- 1.6 额外建议
- 1.7 更多信息
- 2 数字表示
- 2.1 什么是数字
- 2.2 计数系统
- 2.2.1 十进制位值计数系统
- 2.2.2 底数(基数)
- 2.2.3 二进制计数系统
- 2.2.4 十六进制计数系统
- 2.2.5 八进制计数系统
- 2.3 数字/字符串转换
- 2.4 内部数字表示形式
- 2.4.1 位
- 2.4.2 位串
- 2.5 有符号和无符号数
- 2.6 二进制数的属性
- 2.7 符号扩展、零扩展和收缩
- 2.8 饱和操作
- 2.9 二进制编码的十进制表示
- 2.10 定点表示形式
- 2.11 比例数字格式
- 2.12 有理数表示形式
- 2.13 更多信息
- 3 二进制算术运算和位运算
- 3.1 二进制和十六进制数字的算术运算
- 3.1.1 二进制加法
- 3.1.2 二进制减法
- 3.1.3 二进制乘法
- 3.1.4 二进制除法
- 3.2 位的逻辑运算
- 3.3 二进制数值和位串的逻辑运算
- 3.4 有用的位运算
- 3.4.1 使用AND运算判断位串中的一位
- 3.4.2 使用AND运算判断多个位为零或非零
- 3.4.3 比较二进制字符串中的多个位
- 3.4.4 使用AND运算创建模n计数器
- 3.5 移位和旋转
- 3.6 位字段和打包数据
- 3.7 数据的打包和解包
- 3.8 更多信息
- 4 浮点表示形式
- 4.1 浮点运算简介
- 4.2 IEEE浮点格式
- 4.2.1 单精度浮点格式
- 4.2.2 双精度浮点格式
- 4.2.3 扩展精度浮点格式
- 4.2.4 四精度浮点格式
- 4.3 规约形式与非规约形式
- 4.4 舍入
- 4.5 特殊的浮点值
- 4.6 浮点数异常
- 4.7 浮点运算
- 4.7.1 浮点表示形式
- 4.7.2 浮点数的加减法
- 4.7.3 浮点数的乘除法
- 4.8 更多信息
- 5 字符表示形式
- 5.1 字符数据
- 5.1.1 ASCII字符集
- 5.1.2 EBCDIC字符集
- 5.1.3 双字节字符集
- 5.1.4 Unicode字符集
- 5.1.5 Unicode码位
- 5.1.6 Unicode编码平面
- 5.1.7 代用码位
- 5.1.8 字形、字符和字素簇
- 5.1.9 Unicode规范和规范等价性
- 5.1.10 Unicode编码
- 5.1.11 Unicode组合字符
- 5.2 字符串
- 5.2.1 字符串格式
- 5.2.2 静态字符串、伪动态字符串和动态字符串
- 5.2.3 字符串的引用计数
- 5.2.4 Delphi字符串
- 5.2.5 自定义字符串格式
- 5.3 字符集数据类型
- 5.3.1 字符集的幂集表示形式
- 5.3.2 字符集的列表表示形式
- 5.4 设计自定义字符集
- 5.4.1 设计高效的字符集
- 5.4.2 数字字符的编码分组
- 5.4.3 字母字符分组
- 5.4.4 比较字母字符
- 5.4.5 其他字符分组
- 5.5 更多信息
- 6 内存结构和访问
- 6.1 基本系统组件
- 6.1.1 系统总线
- 6.2 内存的物理结构
- 6.2.1 8位数据总线
- 6.2.2 16位数据总线
- 6.2.3 32位数据总线
- 6.2.4 64位数据总线
- 6.2.5 非80x86处理器对小单位内存的访问
- 6.3 大端序与小端序结构
- 6.4 系统时钟
- 6.4.1 内存访问和系统时钟
- 6.4.2 等待状态
- 6.4.3 缓存
- 6.5 CPU的内存访问模式
- 6.5.1 直接内存寻址模式
- 6.5.2 间接寻址模式
- 6.5.3 变址寻址模式
- 6.5.4 比例变址寻址模式
- 6.6 更多信息
- 7 复合数据类型与内存对象
- 7.1 指针类型
- 7.1.1 指针的实现
- 7.1.2 指针与动态内存分配
- 7.1.3 指针操作与指针运算
- 7.2 数组
- 7.2.1 数组声明
- 7.2.2 内存中的数组表示形式
- 7.2.3 访问数组元素
- 7.2.4 多维数组
- 7.3 记录/结构体
- 7.3.1 Pascal/Delphi记录
- 7.3.2 C/C++记录
- 7.3.3 HLA记录
- 7.3.4 Swift记录(元组)
- 7.3.5 记录的内存存储
- 7.4 判别联合
- 7.4.1 C/C++联合
- 7.4.2 Pascal/Delphi联合
- 7.4.3 Swift联合
- 7.4.4 HLA联合
- 7.4.5 联合的内存存储
- 7.4.6 联合的其他用途
- 7.5 类
- 7.5.1 继承
- 7.5.2 类构造函数
- 7.5.3 多态
- 7.5.4 抽象方法和抽象基类
- 7.6 C++类
- 7.6.1 C++中的抽象成员函数和类
- 7.6.2 C++的多重继承
- 7.7 Java类
- 7.8 Swift类
- 7.9 协议与接口
- 7.10 泛型和模板
- 7.11 更多信息
- 8 布尔逻辑与数字设计
- 8.1 布尔代数
- 8.1.1 布尔运算符
- 8.1.2 布尔假设
- 8.1.3 布尔运算符优先级
- 8.2 布尔函数与真值表
- 8.3 函数编号
- 8.4 布尔表达式的代数运算
- 8.5 规范形式
- 8.5.1 极小项和规范形式与真值表
- 8.5.2 使用代数方法得到极小项和规范形式
- 8.5.3 极大项积规范形式
- 8.6 布尔函数简化
- 8.7 这和计算机有什么关系
- 8.7.1 电路与布尔函数
- 8.7.2 组合电路
- 8.7.3 时序与时钟逻辑
- 8.8 更多信息
- 9 CPU体系结构
- 9.1 CPU设计基础
- 9.2 指令的解码与执行:随机逻辑与微码
- 9.3 指令执行详解
- 9.3.1 mov指令
- 9.3.2 add指令
- 9.3.3 jnz指令
- 9.3.4 loop指令
- 9.4 RISC还是CISC:通过执行更多更快的指令来提高性能
- 9.5 提高处理速度的关键:并行
- 9.5.1 功能单元
- 9.5.2 预取队列
- 9.5.3 影响预取队列性能的情况
- 9.5.4 同时执行多条指令的流水线
- 9.5.5 指令缓存:提供多条内存访问通路
- 9.5.6 流水线冒险
- 9.5.7 超标量运算:并行执行指令
- 9.5.8 乱序执行
- 9.5.9 寄存器重命名
- 9.5.10 甚长指令字体系结构
- 9.5.11 并行处理
- 9.5.12 多处理
- 9.6 更多信息
- 10 指令集体系结构
- 10.1 指令集设计的重要性
- 10.2 指令设计的基本目标
- 10.2.1 操作码的长度选择
- 10.2.2 规划未来
- 10.2.3 选择指令
- 10.2.4 分配指令操作码
- 10.3 假想处理器Y86
- 10.3.1 Y86的限制
- 10.3.2 Y86指令
- 10.3.3 Y86的寻址模式
- 10.3.4 Y86指令编码
- 10.3.5 Y86指令编码示例
- 10.3.6 扩展Y86指令集
- 10.4 80x86指令编码
- 10.4.1 指令操作码的编码
- 10.4.2 add指令编码的例子
- 10.4.3 x86的立即(常量)操作数编码
- 10.4.4 8位、16位和32位操作数的编码
- 10.4.5 64位操作数编码
- 10.4.6 指令的替代编码
- 10.5 指令集设计对程序员的意义
- 10.6 更多信息
- 11 内存体系结构与组织
- 11.1 内存层次结构
- 11.2 内存层次结构的工作原理
- 11.3 内存子系统的性能差距
- 11.4 缓存体系结构
- 11.4.1 直接映射缓存
- 11.4.2 全相联缓存
- 11.4.3 n路组相联缓存
- 11.4.4 缓存行置换策略
- 11.4.5 缓存写入策略
- 11.4.6 缓存使用与软件
- 11.5 NUMA与外设
- 11.6 虚拟内存、内存保护与分页
- 11.7 编写理解内存层次结构的软件
- 11.8 运行时的内存结构
- 11.8.1 静态对象与动态对象,绑定与生命期
- 11.8.2 代码段、只读数据段与常量段
- 11.8.3 静态变量段
- 11.8.4 存储变量段
- 11.8.5 栈
- 11.8.6 堆与动态内存分配
- 11.9 更多信息
- 12 输入与输出
- 12.1 连接CPU与外界
- 12.2 端口和系统连接的其他方式
- 12.3 输入/输出机制
- 12.3.1 内存映射输入/输出
- 12.3.2 I/O映射输入/输出
- 12.3.3 直接内存访问
- 12.4 输入/输出速度等级
- 12.5 系统总线与数据传输速率
- 12.5.1 PCI总线的性能
- 12.5.2 ISA总线的性能
- 12.5.3 AGP总线
- 12.6 缓冲
- 12.7 握手
- 12.8 I/O端口超时
- 12.9 中断与轮询式I/O
- 12.10 保护模式操作与设备驱动程序
- 12.10.1 设备驱动模型
- 12.10.2 与设备驱动程序通信
- 12.11 更多信息
- 13 计算机外设总线
- 13.1 小型计算机系统接口
- 13.1.1 限制
- 13.1.2 改进
- 13.1.3 SCSI协议
- 13.1.4 SCSI的优点
- 13.2 IDE/ATA接口
- 13.2.1 SATA接口
- 13.2.2 光纤通道
- 13.3 通用串行总线
- 13.3.1 USB设计
- 13.3.2 USB性能
- 13.3.3 USB传输的类型
- 13.3.4 USB-C
- 13.3.5 USB设备驱动程序
- 13.4 更多信息
- 14 大容量存储设备与文件系统
- 14.1 磁盘驱动器
- 14.1.1 软盘驱动器
- 14.1.2 硬盘驱动器
- 14.1.3 RAID系统
- 14.1.4 光驱
- 14.1.5 CD、DVD与蓝光驱动器
- 14.2 磁带驱动器
- 14.3 闪存
- 14.4 RAM盘
- 14.5 固态硬盘
- 14.6 混合硬盘
- 14.7 大容量存储设备上的文件系统
- 14.7.1 顺序文件系统
- 14.7.2 高效的文件分配策略
- 14.8 编写操作大容量存储设备数据的软件
- 14.8.1 文件访问的性能
- 14.8.2 同步与异步I/O
- 14.8.3 I/O类型的影响
- 14.8.4 内存映射文件
- 14.9 更多信息
- 15 丰富多彩的输入/输出设备
- 15.1 探索特定PC上的外设
- 15.1.1 键盘
- 15.1.2 标准PC并口
- 15.1.3 串口
- 15.2 鼠标、触控板及其他定点设备
- 15.3 操纵杆与游戏控制器
- 15.4 声卡
- 15.4.1 音频接口外设如何产生声音
- 15.4.2 音频与MIDI文件格式
- 15.4.3 音频设备编程
- 15.5 更多信息
- 后记:运用底层语言思想,编写高级语言代码
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。