pdf

程序是怎么跑起来的

  • 1星
  • 日期: 2020-08-11
  • 大小: 34.98MB
  • 所需积分:1分
  • 下载次数:2
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 变量函数调用算法

本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了“如果是你,你会怎样介绍?”专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。本书图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。

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

1.1 CPU的内部结构解析  3

1.2 CPU是寄存器的集合体  6

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

1.4 条件分支和循环机制  10

1.5 函数的调用机制  13

1.6 通过地址和索引实现数组  16

1.7 CPU的处理其实很简单  17

第2章 数据是用二进制数表示的  19

2.1 用二进制数表示计算机信息的原因  21

2.2 什么是二进制数  23

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

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

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

2.6 掌握逻辑运算的窍门  34

COLUMN 如果是你,你会怎样介绍?——向小学生讲解CPU和二进制  38

第3章 计算机进行小数运算时出错的原因  41

3.1 将0.1累加100次也得不到10  43

3.2 用二进制数表示小数  44

3.3 计算机运算出错的原因  46

3.4 什么是浮点数  47

3.5 正则表达式和  EXCESS系统  50

3.6 在实际的程序中进行确认  52

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

3.8 二进制数和十六进制数  56

第4章 熟练使用有棱有角的内存  59

4.1 内存的物理机制很简单  61

4.2 内存的逻辑模型是楼房  65

4.3 简单的指针  67

4.4 数组是高效使用内存的基础  69

4.5 栈、队列以及环形缓冲区  71

4.6 链表使元素的追加和删除更容易  75

4.7 二叉查找树使数据搜索更有效  79

第5章 内存和磁盘的亲密关系  81

5.1 不读入内存就无法运行  83

5.2 磁盘缓存加快了磁盘访问速度  84

5.3 虚拟内存把磁盘作为部分内存来使用  85

5.4 节约内存的编程方法  88

5.5 磁盘的物理结构  93

第6章 亲自尝试压缩数据  97

6.1 文件以字节为单位保存  99

6.2 RLE  算法的机制  100

6.3 RLE  算法的缺点  101

6.4 通过莫尔斯编码来看哈夫曼算法的基础  103

6.5 用二叉树实现哈夫曼编码  105

6.6 哈夫曼算法能够大幅提升压缩比率  109

6.7 可逆压缩和非可逆压缩  110

COLUMN 如果是你,你会怎样介绍?——向沉迷游戏的中学生讲解内存和磁盘  114

第7章 程序是在何种环境中运行的  117

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

7.2 Windows克服了CPU以外的硬件差异  122

7.3 不同操作系统的API不同  124

7.4 FreeBSD Port帮你轻松使用源代码  125

7.5 利用虚拟机获得其他操作系统环境  127

7.6 提供相同运行环境的 Java虚拟机  128

7.7 BIOS和引导  130

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

8.1 计算机只能运行本地代码  135

8.2 本地代码的内容  137

8.3 编译器负责转换源代码  139

8.4 仅靠编译是无法得到可执行文件的  141

8.5 启动及库文件  143

8.6 DLL文件及导入库  145

8.7 可执行文件运行时的必要条件  146

8.8 程序加载时会生成栈和堆  148

8.9 有点难度的Q&A  150

第9章 操作系统和应用的关系  153

9.1 操作系统功能的历史  155

9.2 要意识到操作系统的存在  157

9.3 系统调用和高级编程语言的移植性  160

9.4 操作系统和高级编程语言使硬件抽象化  161

9.5 Windows操作系统的特征  163

COLUMN 如果是你,你会怎样介绍?——向超喜欢手机的女高中生讲解操作系统的作用  170

第10章 通过汇编语言了解程序的实际构成  173

10.1 汇编语言和本地代码是一一对应的  175

10.2 通过编译器输出汇编语言的源代码  177

10.3 不会转换成本地代码的伪指令  180

10.4 汇编语言语法是“操作码+操作数”  182

10.5 最常用的mov指令  185

10.6 对栈进行push和pop 185

10.7 函数调用机制  187

10.8 函数内部的处理  189

10.9 始终确保全局变量用的内存空间  191

10.10 临时确保局部变量用的内存空间  196

10.11 循环处理的实现方法  199

10.12 条件分支的实现方法  202

10.13 了解程序运行方式的必要性  204

第11章 硬件控制方法  209

11.1 应用和硬件无关?  211

11.2 支撑硬件输入输出的IN指令和OUT指令  212

11.3 编写测试用的输入输出程序  215

11.4 外围设备的中断请求  218

11.5 用中断来实现实时处理  221

11.6 DMA可以实现短时间内传送大量数据  222

11.7 文字及图片的显示机制  224

COLUMN 如果是你,你会怎样介绍?——向邻居老奶奶说明显示器和电视机的不同  226

第12章 让计算机“思考”  229

12.1 作为“工具”的程序和为了“思考”的程序  231

12.2 用程序来表示人类的思考方式  232

12.3 用程序来表示人类的思考习惯  235

12.4 程序生成随机数的方法  237

12.5 活用记忆功能以达到更接近人类的判断  239

12.6 用程序来表示人类的思考方式  242

COLUMN 如果是你,你会怎样介绍?——向常光临的酒馆老板讲解计算机的思考机制  245

附录 让我们开始C语言之旅  247

C语言的特点  247

变量和函数  248

数据类型  249

标准函数库  250

函数调用  251

局部变量和全局变量  254

数组和循环  255

其他语法结构  256

更多简介内容

推荐帖子

TI DSP的仿真模拟
TI 主页 > Digital Signal Processing > DSP 设计支持 > 开发开具 > 仿真模拟         TI 提供 XDS510™ 和 XDS560™ 类仿真器,支持实时基于 JTAG 扫描的仿真并为完整系列的 TI DSP 提供产品支持。这些仿真器与 Code Composer Studio 调试器界面紧密集成,使开发者能够利用 TI 的所有实时仿真控制和可视化功
Aguilera 模拟与混合信号
分享一个无线遥控小车的制作
引言 Arduino或ESP32 驱动小车作为一个经典应用,广泛被开源硬件爱好者改装。然而,其交互方式大部分依然是传统的按键交互。本次尝试改变Arduino 小车的交互方式,利用PAJ7620U2 Gesture Sensor 手势识别传感器识别,达到可以用手势直观控制小车的目的。 最终视频中,我们的小车可以接受手势指令:前进,后退,停止,转向,这些指令由手势转化 而来,并通过HC12远距离
Jacktang RF/无线
多网友推荐:雅特力AT-START-F403A,你值得拥有!活动即将上线,敬请期待~
AT-START-F403A AT-START-F403A帮助你探索发现带有FPU内核ARM Cortex -M4F 32位处理器AT32F403A的高性能特性,并帮助你开发应用。AT-START-F403A基于AT32F403AVGT7芯片,包括LED灯,按钮,一个USB的micro-B连接器,ArduinoTM Uno R3扩展接口,和扩充的16 M字节SPI闪存存储器。此开
okhxyyo 国产芯片交流
Vivado工程源码大瘦身
  特权同学原创,转载请保留署名 Vivado的工程文件包含了源码、IP、设置和各种编译的中间文件,动辄上百MB甚至上GB,非常占硬盘。可以通过以下步骤对编译过的工程进行瘦身,只预留必要的设置、IP和源码,减少硬盘空间占用。   打开Vivado工程,在Tcl Console中输入reset_project命令(Type a Tcl command here处
ove学习使我快乐 FPGA/CPLD
【STM32F769Discovery开发板试用】串口空闲中断不定长接收&PWM输出方波
本帖最后由 donatello1996 于 2020-8-10 12:01 编辑        串口空闲中断和PWM方波输出都是实际产品项目中非常常用的功能,串口空闲中断的好处在于可以使用不轮询方式,不占用CPU资源的前提下进行不定长串口字符串接收,因为触发方式是使用中断。使用空闲中断实现不定长接收的方式非常简单,只需要两点,一个是开启空闲中断,一个是开启接收DMA,这边我使用开发板的Ard
donatello1996 开发板测评专版
叮~您有一份测评情报待收货~请打开本帖查看
每一天都是新的开始,新一周的测评情报也来了~这周又有新的测评活动上线,也有活动结束申请期,开始进入选人阶段,还有多个活动测评体验报告不断出炉,非常精彩,一起来看看吧~   正在申请期的测评活动: 1.沁恒CH579M-R1开发板免费测评,等你来玩 http://bbs.eeworld.com.cn/elecplay/content/137 2.多领域跨界选手,兆易GD
okhxyyo 开发板测评专版

评论

登录/注册

意见反馈

求资源

回顶部

datasheet推荐 换一换

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })