内容简介
《程序是怎样跑起来的》一书从计算机的内部结构开始讲起,以图配文的形式详细讲解了制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了“如果是你,你会怎样介绍?”专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。本书图文并茂,通俗易懂,适合计算机爱好者及相关从业人员阅读。
目录
目录 第 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
摘要与插图
怎么样?是不是发现有一些问题无法简单地解释清楚呢?是笔者的答案和解析,供大家参考。
pan style="font-family:宋体">指示计算机每一步动作的一组指令
2.指令和数据
3.CPU可以直接识别并使用的语言
4.内存
5.内存中,用来表示命令和数据存储位置的数值
6.CPU
解析
pan style="font-family:宋体">一般所说的程序,譬如运动会、音乐会的程序等,指的是“行
2.程序是指令和数据的组合体。例如,C语言“printf(”你好”);”
这个简单的程序中,printf是指令,”你好”是数据。
3.CPU能够直接识别和执行的只有机器语言。使用C、Java等语
言编写的程序,后都会转化成机器语言。
4.硬盘和磁盘等媒介上保存的程序被到内存后才能运行。
5.内存中保存命令和数据的场所,通过地址来标记和指定。地址由整数值表示。
6.计算机的构成元件中,根据程序的指令行数据运算,并控制整个计算机的设备称作CPU。大家熟知的奔腾(Pentium)
是CPU的一种。首先让我们来看一下解释和运行程序的CPU。CPU 是英文 Central Processing Unit(中央处理器)的
缩写,相当于计算机的大脑,它的内部由数百万数亿个晶体管构成,这些都是大家所熟知的。不过,对CPU的了解如果只限于此的话,对
编程是没有任何帮助的。程序员还需要理解CPU是如何运行的,是要弄清楚负责保存指令和数据的寄存器的机制。了解了寄存器,也自然而然地理解了程序的运行机制。可能有很多读者会认为CPU的运行机制比较难,其实它简单。所以,不妨放松心情,跟随笔者一起往下阅读吧。
1.1CPU的内部结构解析
图1-pan style="font-family:宋体">展示了程序运行的程。可以说了解程序的运行流程是掌握程序运行机制的基础和前提。详细内容会在接下来的章节中逐渐展开,这里主要是希望大家先有个大致印象。在这程中,CPU所负责的是解释和运行终转换成机器语言的程序内容。
CPU和内存是由许多晶体管组成的电子部件,通常称为IC(Integrated Circuit,集成电路)。能方面来看,如图1-2所示,CPU的内部由寄存器、控制器、运算器和时钟四个部分构成,各部分之间由电流信号相互连通。寄存器可用来暂存指令、数据等处理对象,可……




