程序是怎样跑起来的 PDF 文档
本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了如果是你,你会怎样介绍?专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。
本书图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。
大家还记得自己初次接触计算机时的情形吗?想必多数读者使用的都是 Windows 系统,应该也有不少读者使用 Visual Studio 和 Java 等集成开发环境(IDE,Integrated Development Environment,即集成了编程所需的各种工具的开发软件)开发过程序。Windows 的图形化操作界面,大大提高了计算机操作的便利性,而利用集成开发环境开发程序,就像用绘图软件画图一样简单。由此可见,这是一个便利的时代。
然而,现实却不容乐观,我们在享受这些方便的同时也付出了代价。虽然拥有一定的编程能力,却无法进一步提高自身技能;知识应用能力的不足导致无法编写源程序。越来越多的程序员正为这些问题而烦恼。个中原因在于,大家不了解程序运行的根本机制。
目录
第 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 掌握逻辑运算的窍门
COLUMN 如果是你,你会怎样介绍?:向小学生讲解 CPU 和二进制
第 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 可逆压缩和非可逆压缩
COLUMN 如果是你,你会怎样介绍?:向沉迷游戏的中学生讲解内存和磁盘
第 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 文字及图片的显示机制
COLUMN 如果是你,你会怎样介绍?:向邻居老奶奶说明显示器 和电视机的不同
第 12 章 让计算机“思考”
12.1 作为“工具”的程序和为了“思考”的程序
12.2 用程序来表示人类的思考方式
12.3 用程序来表示人类的思考习惯
12.4 程序生成随机数的方法
12.5 活用记忆功能以达到更接近人类的判断
12.6 用程序来表示人类的思考方式
COLUMN 如果是你,你会怎样介绍?:向常光临的酒店老板讲解计算机的 思考机制
附录 让我们开始 C 语言之旅
C 语言的特点
变量和函数
数据类型
标准函数库
函数调用
局部变量和全局变量
数组和循环
其他语法结构
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/03/ReMSwfC5AyDPvBQW.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论