
程序是怎样跑起来的
图灵程序设计丛书·图解与入门系列
作品简介
本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了“如果是你,你会怎样介绍?”专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。本书图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。
矢泽久雄,YAZAWA股份有限公司董事长兼总经理。GrapeCity信息技术集团顾问。电脑作家之友会会长。曾在某大型电子公司从事过电脑生产,在Software House做过程序员,现主要从事软件包的开发工作。工作之余笔耕不缀,从电路到编程语言均有涉及。代表作有《计算机是怎样跑起来的》《使用C语言学习程序设计的基础》《征服C++类和继承》等。自称软件艺人。
译者:李逢俊,北京易网联信信息技术有限公司CEO。哈尔滨工业大学硕士毕业后在日工作8年,曾在日本知名游戏公司担任移动互联网部门负责人,拥有丰富的移动游戏开发及运营经验。2011年回国创业,创建易网联信团队(www.easymobi.cn),致力于精品手机游戏的开发及运营。
作品目录
前言
程序是怎样跑起来的——本书中涉及的主要关键词
本书的结构
第 1 章 对程序员来说 CPU 是什么
1.1 CPU 的内部结构解析
1.2 CPU 是寄存器的集合体
1.3 决定程序流程的程序计数器
1.4 条件分支和循环机制
1.5 函数的调用机制
1.6 通过地址和索引实现数组
1.7 CPU 的处理其实很简单
第 2 章 数据是用二进制数表示的
2.1 用二进制数表示计算机信息的原因
2.2 什么是二进制数
2.3 移位运算和乘除运算的关系
2.4 便于计算机处理的“补数”
2.5 逻辑右移和算术右移的区别
2.6 掌握逻辑运算的窍门
第 3 章 计算机进行小数运算时出错的原因
3.1 将 0.1 累加 100 次也得不到 10
3.2 用二进制数表示小数
3.3 计算机运算出错的原因
3.4 什么是浮点数
3.5 正则表达式和 EXCESS 系统
3.6 在实际的程序中进行确认
3.7 如何避免计算机计算出错
3.8 二进制数和十六进制数
第 4 章 熟练使用有棱有角的内存
4.1 内存的物理机制很简单
4.2 内存的逻辑模型是楼房
4.3 简单的指针
4.4 数组是高效使用内存的基础
4.5 栈、队列以及环形缓冲区
4.6 链表使元素的追加和删除更容易
4.7 二叉查找树使数据搜索更有效
第 5 章 内存和磁盘的亲密关系
5.1 不读入内存就无法运行
5.2 磁盘缓存加快了磁盘访问速度
5.3 虚拟内存把磁盘作为部分内存来使用
5.4 节约内存的编程方法
5.5 磁盘的物理结构
第 6 章 亲自尝试压缩数据
6.1 文件以字节为单位保存
6.2 RLE 算法的机制
6.3 RLE 算法的缺点
6.4 通过莫尔斯编码来看哈夫曼算法的基础
6.5 用二叉树实现哈夫曼编码
6.6 哈夫曼算法能够大幅提升压缩比率
6.7 可逆压缩和非可逆压缩
第 7 章 程序是在何种环境中运行的
7.1 运行环境 = 操作系统 + 硬件
7.2 Windows 克服了 CPU 以外的硬件差异
7.3 不同操作系统的 API 不同
7.4 FreeBSD Port 帮你轻松使用源代码
7.5 利用虚拟机获得其他操作系统环境
7.6 提供相同运行环境的 Java 虚拟机
7.7 BIOS 和引导
第 8 章 从源文件到可执行文件
8.1 计算机只能运行本地代码
8.2 本地代码的内容
8.3 编译器负责转换源代码
8.4 仅靠编译是无法得到可执行文件的
8.5 启动及库文件
8.6 DLL 文件及导入库
8.7 可执行文件运行时的必要条件
8.8 程序加载时会生成栈和堆
8.9 有点难度的 Q&A
第 9 章 操作系统和应用的关系
9.1 操作系统功能的历史
9.2 要意识到操作系统的存在
9.3 系统调用和高级编程语言的移植性
9.4 操作系统和高级编程语言使硬件抽象化
9.5 Windows 操作系统的特征
COLUMN 如果是你,你会怎样介绍?
第 10 章 通过汇编语言了解 程序的实际构成
10.1 汇编语言和本地代码是一一对应的
10.2 通过编译器输出汇编语言的源代码
10.3 不会转换成本地代码的伪指令
10.4 汇编语言的语法是“操作码 + 操作数”
10.5 最常用的 mov 指令
10.6 对栈进行 push 和 pop
10.7 函数调用机制
10.8 函数内部的处理
10.9 始终确保全局变量用的内存空间
10.10 临时确保局部变量用的内存空间
10.11 循环处理的实现方法
10.12 条件分支的实现方法
10.13 了解程序运行方式的必要性
第 11 章 硬件控制方法
11.1 应用和硬件无关?
11.2 支撑硬件输入输出的 IN 指令和 OUT 指令
11.3 编写测试用的输入输出程序
11.4 外围设备的中断请求
11.5 用中断来实现实时处理
11.6 DMA 可以实现短时间内传送大量数据
11.7 文字及图片的显示机制
第 12 章 让计算机“思考”
12.1 作为“工具”的程序和为了“思考”的程序
12.2 用程序来表示人类的思考方式
12.3 用程序来表示人类的思考习惯
12.4 程序生成随机数的方法
12.5 活用记忆功能以达到更接近人类的判断
12.6 用程序来表示人类的思考方式
附录 让我们开始 C 语言之旅
结语
致谢