深入理解计算机语言,编程卓越之道 第一卷:深入理解计算机

1 编写卓越代码须知.

1.1 编程卓越之道系列1

1.2 本卷内容3

1.3 本卷所做的假设5

1.4 卓越代码的各项特征6

1.5 本卷涉及的环境7

1.6 获取更多信息8

2 数值表示

2.1 什么是数10

2.2 计数系统(Numbering System)11

2.2.1 十进制位值计数系统11

2.2.2 进制(基数)12

2.2.3 二进制计数系统13

2.2.4 十六进制计数系统15

2.2.5 八进制(基数为8)计数系统18

2.3 数/字符串转换19

2.4 数的内部表示21

2.4.1 位(bits)21

2.4.2 位串22

2.5 有符号数与无符号数24

2.6 二进制数一些有用的特性25

2.7 符号扩展,零扩展,以及缩减27

2.8 饱和操作(saturation)30

2.9 二进制编码的十进制(BCD)表示法31

2.10 定点表示法33

2.11 比例数格式(scaled numeric formats)35

2.12 有理数表示法38

2.13 获取更多信息38

3 二进制算术与位运算

3.1 二进制数与十六进制数的算术运算39

3.1.1 二进制加法40

3.1.2 二进制减法41

3.1.3 二进制乘法42

3.1.4 二进制除法43

3.2 位逻辑运算46

3.3 二进制数和位串(bit string)的逻辑运算47

3.4 有用的位运算48

3.4.1 使用与运算检测位串的各个位48

3.4.2 使用与运算来检测一组位是零/非零49

3.4.3 比较一个位串中的一组位49

3.4.4 使用逻辑与创建模-n计数器(Modulo-n Counters)51

3.5 移位(Shift)与循环移位(Rotate)52

3.6 位域与打包(packed)数据55

3.7 打包与解包数据60

3.8 获取更多信息64

4 浮点表示法

4.1 浮点运算简介66

4.2 IEEE浮点数格式71

4.2.1 单精度浮点格式72

4.2.2 双精度浮点格式74

4.2.3 扩展精度浮点格式74

4.3 规格化(normalization)与反向规格化(denormalized)数75

4.4 舍入(rounding)77

4.5 特殊的浮点数78

4.6 浮点异常79

4.7 浮点运算80

4.7.1 浮点表示80

4.7.2 浮点加法与减法81

4.7.3 浮点乘法与除法92

4.8 获取更多信息100

5 字符表示法

5.1 字符数据104

5.1.1 ASCII字符集104

5.1.2 EBCDIC字符集107

5.1.3 双字节字符集108

5.1.4 Unicode字符集109

5.2 字符串110

5.2.1 字符串格式111

5.2.2 字符串类型:静态,伪动态,以及动态字符串116

5.2.3 字符串引用计数117

5.2.4 Delphi/Kylix字符串118

5.2.5 创建你自己的字符串格式119

5.3 字符集合119

5.3.1 字符集合的幂集表示法120

5.3.2 字符集合的列表表示法120

5.4 设计你自己的字符集121

5.4.1 设计一种高效的字符集122

5.4.2 为数字分组字符码124

5.4.3 分组字母字符124

5.4.4 比较字母字符126

5.4.5 其他字符分组128

5.5 获取更多信息131

6 内存组织与访问

6.1 基本的系统组成部分134

6.1.1 系统总线134

6.1.2 地址总线135

6.1.3 控制总线136

6.2 内存物理组织137

6.2.1 8 位地址总线139

6.2.2 16位数据总线140

6.2.3 32位数据总线142

6.2.4 64位总线143

6.2.5 在非80x86处理器上访问小数据单位143

6.3 大端组织与小端组织144

6.4 系统时钟149

6.4.1 内存访问与系统时钟151

6.4.2 等待状态152

6.4.3 高速缓存内存153

6.5 CPU内存访问157

6.5.1 直接内存寻址模式158

6.5.2 间接寻址模式158

6.5.3 变址寻址模式159

6.5.4 比例变址寻址模式160

6.6 获取更多信息160

7 复合数据类型与内存对象

7.1 指针类型162

7.1.1 指针的实现163

7.1.2 指针与动态内存分配164

7.1.3 指针操作与指针运算164

7.2 数组169

7.2.1 数组声明169

7.2.2 数组在内存中的表示172

7.2.3 访问数组元素173

7.2.4 多维数组174

7.3 记录/结构181

7.3.1 Pascal/Delphi中的记录181

7.3.2 C/C++中的记录182

7.3.3 HLA中的记录182

7.3.4 记录的内存存储183

7.4 判别式联合185

7.4.1 C/C++中的联合186

7.4.2 Pascal/Delphi/Kylix中的联合186

7.4.3 HLA中的联合187

7.4.4 联合的内存存储187

7.4.5 联合的其他用途188

7.5 获取更多信息189

8 布尔逻辑与数字设计

8.1 布尔代数192

8.1.1 布尔运算符192

8.1.2 布尔代数的公理192

8.1.3 布尔运算符优先级194

8.2 布尔函数与真值表194

8.3 函数号197

8.4 布尔表达式的代数运算198

8.5 标准型199

8.5.1 最小项之和标准型与真值表200

8.5.2 使用代数方法得到最小项之和标准型202

8.5.3 最大项之积标准型203

8.6 布尔函数化简204

8.7 但是,这些和计算机又有什么关系呢?212

8.7.1 电子线路与布尔函数的对应213

8.7.2 组合电路214

8.7.3 时序与钟控逻辑(Sequential and Clocked Logic)220

8.8 获取更多信息224

9 CPU体系结构

9.1 CPU设计基础225

9.2 指令解码与执行:随机逻辑与微码228

9.3 指令执行详解229

9.3.1 mov指令230

9.3.2 add指令232

9.3.3 jnz指令234

9.3.4 loop指令234

9.4 并行——提高处理速度的关键235

9.4.1 预取队列238

9.4.2 妨碍预取队列性能的情况242

9.4.3 流水线操作——重叠执行多条指令243

9.4.4 指令高速缓存——提供访问内存的多条通路247

9.4.5 流水线相关(pipeline hazards)249

9.4.6 超标量运算——并行执行指令251

9.4.7 乱序执行(Out-of-Order Execution)253

9.4.8 寄存器重命名253

9.4.9 甚长指令字(VLIW)体系结构255

9.4.10 并行处理255

9.4.11 多处理257

9.5 获取更多信息258

10 指令集体系结构

10.1 指令集设计的重要性260

10.2指令设计基本目标261

10.2.1 选择指令长度263

10.2.2 规划未来265

10.2.3 选择指令266

10.2.4 给指令指派操作码266

10.3 Y86假想处理器267

10.3.1 Y86的限制268

10.3.2 Y86指令268

10.3.3 Y86的寻址模式270

10.3.4 Y86指令编码271

10.3.5 Y86指令编码举例274

10.3.6 扩展Y86指令集278

10.4 80x86指令编码279

10.4.1 编码指令操作码281

10.4.2 add指令编码的例子287

10.4.3 编码立即操作数291

10.4.4 8,16,与32位操作数编码292

10.4.5 指令的替代编码(alternate encoding)292

10.5 指令集设计对程序员的意义293

10.6 获取更多信息293

11 内存体系结构与组织

11.1 内存层次结构295

11.2 内存层次结构是如何工作的298

11.3 内存子系统的相对性能300

11.4 高速缓存体系结构302

11.4.1 直接映射高速缓存303

11.4.2 全相联高速缓存304

11.4.3 n路组相联高速缓存304

11.4.4高速缓存方案与数据访问类型的匹配305

11.4.5 缓存线替换策略306

11.4.6 写数据到内存中307

11.4.7 高速缓存使用与软件308

11.5 虚存,保护,以及页面调度309

11.6 颠簸312

11.7 NUMA与外围设备313

11.8 编写理解内存层次结构的软件314

11.9 运行时内存组织316

11.9.1 静态与动态对象,绑定,以及生命期317

11.9.2 代码,只读,以及常量段319

11.9.3 静态变量段319..

11.9.4 未初始化存储(BSS)段319

11.9.5 栈段320

11.9.6 堆段与动态内存分配321

11.10 获取更多信息328

12 输入与输出(I/O)

12.1 将CPU与外界相连330

12.2 将端口连接到系统的其他方式333

12.3 I/O机制334

12.3.1 内存映射输入输出334

12.3.2 输入输出与高速缓存335

12.3.3 I/O映射输入/输出335

12.3.4 直接内存访问(DMA)336

12.4 输入输出速度等级337

12.5 系统总线与数据传输率338

12.5.1 PCI总线的性能339

12.5.2 ISA总线的性能340

12.5.3 AGP总线341

12.6 缓冲341

12.7 握手342

12.8 I/O端口的超时343

12.9 中断与轮询方式I/O344

12.10 保护模式操作与设备驱动程序345

12.10.1 设备驱动程序(Device Drivers)346

12.10.2 与设备驱动程序以及“文件”通信347

12.11 深入研究各种PC外设347

12.12 键盘348

12.13 标准PC并口349

12.14 串口351

12.15 磁盘驱动器352

12.15.1 软盘驱动器352

12.15.2 硬盘驱动器352

12.15.3 RAID系统358

12.15.4 Zip与其他光读软盘驱动器359

12.15.5 光驱(optical drive)359

12.15.6 CD-ROM,CD-R,CD-R/W,DVD,DVD-R,

DVD-RAM与DVD-R/W驱动器360

12.16 磁带驱动器362

12.17 闪存363

12.18 RAM盘与半导体盘365

12.19 SCSI设备与控制器367

12.20 IDE/ATA接口372

12.21 大容量存储设备上的文件系统374

12.21.1 使用空闲空间位图(bitmap)管理文件377

12.21.2 文件分配表378

12.21.3 块表文件组织381

12.22 编写处理大容量存储设备上的数据的软件385

12.22.1 文件访问性能386

12.22.2 同步与异步I/O387

12.22.3 I/O类型的影响388

12.22.4 内存映射文件389

12.23 通用串行总线(USB)390

12.23.1 USB的设计390

12.23.2 USB的性能392

12.23.3 USB传输的类型393

12.23.4 USB设备驱动程序395

12.24 鼠标,触控板与其他指点设备396

12.25 操纵杆与游戏控制器397

12.26 声卡399

12.26.1 音频接口外设如何产生声音400

12.26.2 音频与MIDI文件格式401

12.26.3 编程处理音频设备403

12.27 获取更多信息403...

运用底层语言思想

编写高级语言代码

A ASCII字符集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值