首页

程序是怎样跑起来的.pdf

标签:How Program Works     发布时间:2022-12-02   
  • 云盘下载:
  • [提取码:paqp]
       ( 需积分:4  )


程序是怎样跑起来的


目录


第1章 对程序员来说,CPU到底是什么  1

1.1看一看 CPU的内部构造      3

1.2CPU是寄存器的集合体       6

1.3决定程序流程的程序计数器  9

1.4条件分支和循环的原理     10

1.5函数调用的原理           13

1.6用基址和变址实现数组     16

1.7CPU的处理其实很简单      17


第2章 用二进制来理解数据    19

2.1计算机用二进制处理信息的原因  21

2.2二进制到底是什么             23

2.3移位运算与乘除运算的关系     25

2.4便于计算机处理的“2的补码”  27

2.5逻辑右移与算术右移的区别     31

2.6掌握逻辑运算的窍门           34


第3章 计算机在计算小数时会出错的原因  31

3.1将0.1累加100次的结果不是10   33

3.2如何用二进制表示小数         35

3.3计算机计算出错的原因         36

3.4什么是浮点数                 38

3.5规格化表示法与移码表示法     50

3.6用程序来实际确认一下吧       53

3.7如何避免计算机计算出错       56


第4章 让内存化方为圆       61

4.1内存的物理结构十分简单  63

4.2内存的逻辑结构像一幢大楼 67

4.3指针其实很简单          69

4.4用好内存先从数组开始    71

4.5栈与队列,以及环形缓冲区 73

4.6在链表中添加和删除元素很容易 78

4.7用二叉查找树地查找数据       82


第5章 内存与磁盘的密切联系     85

5.1程序加载到内存后才能运行    87

5.2提高磁盘访问速度的磁盘缓存  88

5.3将磁盘当成内存使用的虚拟内存 89

5.4将内存当成磁盘使用的固态硬盘 92

5.5节约内存的编程技巧          93

5.6了解一下磁盘的物理结构      98


第6章 自己动手压缩数据        103

6.1文件是以字节为单位记录的  105

6.2游程编码的原理            106

6.3游程编码的缺点            107

6.4从莫尔斯码中发现哈夫曼算法的基础 108

6.5使用树来构建哈夫曼编码          111

6.6通过哈夫曼算法大幅提高压缩效率  114

6.7无损压缩与有损压缩              115


第7章 程序在怎样的环境下运行    121

7.1运行环境 =操作系统 硬件      123

7.2Windows消除了CPU之外的硬件差异 125

7.3每种操作系统的API都是不同的  128

7.4使用源代码进行安装           129

7.5在任何地方都能提供相同运行环境的 Java虚拟机  130

7.6云计算平台提供的虚拟运行环境   132

7.7BIOS与引导装入程序             134


第8章 从源文件到可执行文件  137

8.1计算机只能执行本机代码   140

8.2看一看本机代码的内容     142

8.3编译器负责翻译源代码     144

8.4仅靠编译无法得到可执行文件 146

8.5启动代码与库文件         147

8.6DLL文件与导入库          149

8.7运行可执行文件需要什么   152

8.8 加载时生成的栈和堆     153

8.9 进阶问答               155


第9章 操作系统与应用程序的关系  159

9.1从历史发展看操作系统的功能   161

9.2关注操作系统的存在           164

9.3系统调用与编程语言的可移植性  166

9.4操作系统和编程语言对硬件进行了抽象化  168

9.5Windows操作系统的特点        170


第10章 通过汇编语言认识程序的真面目  179

10.1汇编语言和本机代码是一一对应的   181

10.2用C编译器输出汇编语言源代码      183

10.3伪指令与注释                     186

10.4汇编语言的语法是“操作码 操作数”  187

10.5常用的movl指令      189

10.6将数据存入栈中      191

10.7函数调用的工作原理  192

10.8被调用函数的工作原理 194

10.9全局变量和局部变量的工作原理  195

10.10循环的工作原理      199

10.11条件分支的工作原理  203

10.12体验汇编语言的意义  207


第11章 访问硬件的方法       209

11.1应用程序是否与硬件有关  211

11.2负责硬件输入输出的in指令和out指令  213

11.3外部设备的中断请求        216

11.4通过中断实现实时处理      220

11.5能够快速传输大量数据的DMA  220

11.6显示字符和图像的原理      222


第12章 如何让计算机“学习”   227

12.1什么是机器学习            229

12.2支持向量机                231

12.3Python交互模式的使用方法  234

12.4准备学习数据              236

12.5查看手写数字数据的内容    237

12.6通过机器学习识别手写数字  239

12.7尝试交叉验证              242


附录1 亲手尝试C语言  247

C语言的特点     247

变量与函数      248

数据类型        249

输入、运算、输出  250

创建和使用函数  252

局部变量与全局变量  254

数组与循环         255

其他语法           257


附录2 亲手尝试Python  261

Python的特点  261

一切皆对象    263

数据类型      265

输入、运算、输出  266

创建和使用函数    266

局部变量与全局变量  268

数组与循环  269

其他语法    271

后记        273

致谢        273

  • ◆ 相关内容