当前位置:首页 > 工业技术
代码揭秘  从C/C++的角度探秘计算机系统
代码揭秘  从C/C++的角度探秘计算机系统

代码揭秘 从C/C++的角度探秘计算机系统PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:左飞编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121093104
  • 页数:415 页
图书介绍:本书从程序设计角度出发,以C/C++为描述语言,以Visual C++为形式工具,将隐藏在代码背后的关于计算机组成原理、计算机操作系统等方面的原理和知识娓娓道来,不仅让读者知其然,更要让读者知其所以然。通过代码揭秘与代码编写这条主线索,详细地描述了计算机组织和代码生成原理等内容。并让这些知识再反作用于编程实践,从而帮助读者写出更适合机器优化的高质量代码。揭开代码背后鲜为人知的秘密,从而让你能够写出适合与计算机交流的优秀代码。
《代码揭秘 从C/C++的角度探秘计算机系统》目录

第1章 绪论 1

1.1 计算机系统初探 2

1.1.1 换个角度看计算机 2

1.1.2 CPU很好很强大 4

1.2 计算机语言与编译技术 8

1.2.1 如何让机器理解你 8

1.2.2 编译技术与开发环境 14

1.2.3 程序开发流程 20

1.3 C语言神话 22

1.3.1 C语言的历史 22

1.3.2 简单说说C语言的特点 23

1.4 奇迹的延续 25

1.4.1 C++的产生与发展 25

1.4.2 C++与面向对象思想 27

1.5 本章小结 31

第2章 揭开数据表示的面纱 32

2.1 进制系统 33

2.1.1 最简单的计数方式 33

2.1.2 计算机里只有黑白 34

2.1.3 压缩表示的二进制 36

2.2 位与位操作 38

2.2.1 计算机存储的单位 38

2.2.2 位操作和位段 39

2.3 计算机中的数值 48

2.3.1 一种最简单的数 48

2.3.2 现实世界需要负数 49

2.3.3 只有整数还不够 51

2.4 让计算机学会写字 56

2.4.1 ASCII码 57

2.4.2 汉字编码 59

2.4.3 更强大的编码 60

2.5 C语言基本数据类型 62

2.5.1 整型 63

2.5.2 字符型 66

2.5.3 注意浮点数陷阱 67

2.6 本章小结 71

第3章 变量与地址 72

3.1 程序都在内存中 73

3.2 很多初学者都怕指针 77

3.3 睁大眼睛看内存 81

3.4 数组与指针是近亲 84

3.5 再谈指针 93

3.6 本章小结 97

第4章 动态内存管理 98

4.1 malloc和free 99

4.2 sizeof并不复杂 101

4.3 内存操作函数 105

4.3.1 memset 105

4.3.2 memcpy和memmove 107

4.4 new和delete 109

4.5 内存错误面面观 113

4.5.1 最怕内存泄漏 113

4.5.2 小心重复释放 115

4.5.3 指针是个坏东西 117

4.5.4 超量写内存 118

4.6 使用Visual C++检查内存泄漏 120

4.7 本章小结 124

第5章 代码与指令系统 125

5.1 还原代码的本来面目 126

5.1.1 内存中的代码 126

5.1.2 指向函数的指针 131

5.1.3 CPU的存储器 136

5.1.4 寄存器变量 143

5.1.5 寄存器组举例 145

5.2 指令——简单or复杂 149

5.2.1 指令格式 149

5.2.2 操作类型 154

5.2.3 操作数类型 155

5.3 如何找到地址 156

5.3.1 下一步该做什么 156

5.3.2 计算机知道自己需要什么 165

5.4 本章小结 172

第6章 函数与函数调用 173

6.1 函数与参数 174

6.1.1 C/C++中的函数 174

6.1.2 参数传递 174

6.1.3 作用域 180

6.2 函数的递归调用 184

6.2.1 到处都是递归 184

6.2.2 小心使用递归 188

6.2.3 递归与非递归 194

6.2.4 内、外部变量分配原理 198

6.3 内存的使用 200

6.3.1 活动记录与栈 200

6.3.2 静态分配 203

6.3.3 有静就有动 205

6.4 程序在内存中的模样 217

6.5 本章小结 219

第7章 多级存储系统 221

7.1 存储系统及层级结构 222

7.1.1 存储器分类 222

7.1.2 存储器的层级结构 225

7.1.3 访问的局部性原理 227

7.1.4 再谈存储器的层级 231

7.2 高速缓存 235

7.2.1 缓存设计策略 235

7.2.2 多级缓存原理 245

7.2.3 实际编码指导 250

7.3 虚拟内存 258

7.3.1 何为虚拟内存 259

7.3.2 虚拟地址 262

7.3.3 页面请求与磁盘缓冲 269

7.3.4 工作集合与系统颠簸 274

7.3.5 虚拟内存与性能影响 276

7.4 本章小结 278

第8章 操作系统交互 279

8.1 多任务 280

8.1.1 串行与并行 280

8.1.2 多任务的实现 282

8.1.3 并发程序设计 283

8.2 进程 284

8.2.1 进程的概念 284

8.2.2 进程的状态 285

8.2.3 进程控制块 288

8.3 Win32进程编程 289

8.3.1 创建进程 289

8.3.2 环境变量 299

8.4 线程 301

8.4.1 线程的概念 301

8.4.2 多线程 302

8.4.3 超线程 303

8.4.4 线程池 304

8.5 调度 305

8.5.1 处理器的调度 305

8.5.2 调度算法准则 306

8.5.3 常见的调度算法 308

8.6 Win32线程编程 313

8.6.1 创建和退出线程 313

8.6.2 挂起和恢复线程 317

8.6.3 远程线程的注入 320

8.7 本章小结 329

第9章 瓶颈与优化 330

9.1 优化还是不优化 331

9.2 测量与分析的内容 333

9.3 测量与分析的方法 334

9.3.1 使用计时器 334

9.3.2 使用Profile 341

9.3.3 使用性能监视器 349

9.4 基本规律 350

9.4.1 二八法则 350

9.4.2 安达尔定律 351

9.5 程序优化路线 354

9.5.1 优化实践的经典案例 354

9.5.2 优化案例的启示 355

9.6 编译器不是万能的 357

9.7 实际优化建议 360

9.7.1 循环条件中的低效 361

9.7.2 注意字符串的操作 363

9.7.3 权衡函数调用需求 364

9.7.4 转换指针形式代码 366

9.7.5 检查存储器的访问 367

9.7.6 使用循环展开技术 372

9.7.7 查表替换复杂运算 375

9.7.8 耗时计算移出循环 377

9.8 本章小结 378

附录A 浅谈编程能力的培养与提高 379

附录B 程序人生 397

参考文献 414

返回顶部