精华内容
下载资源
问答
  • Win知识 - 程序是怎样跑起来的(合集)

    万次阅读 多人点赞 2019-01-07 10:33:32
    操作系统的硬件控制功能...在前面的程序中用到了time()及printf()等函数,这些函数内部也都使用了系统调用。这里之所以用“内部”这个词,因为在Windows操作系统中,提供返回当前日期和时刻,以及在显示器中显示字...

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

    操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的。这些函数及调用函数的行为统称为系统调用(system call),也就是应用对操作系统(system)的功能进行调用(call)的意思。在前面的程序中用到了time()及printf()等函数,这些函数内部也都使用了系统调用。这里之所以用“内部”这个词,是因为在Windows操作系统中,提供返回当前日期和时刻,以及在显示器中显示字符串等功能的系统调用的函数名,并不是time()和printf()。系统调用是在time()和printf()函数的内部执行的。大家可能会认为这个方法有些绕,不过这是有原因的。

    C语言等高级编程语言并不依存于特定的操作系统。这是因为人们希望不管是Windows还是Linux,都能使用几乎相同的源代码。因此,高级编程语言的机制就是,使用独自的函数名,然后再在编译时将其转换成相应操作系统的系统调用(也有可能是多个系统调用的组合)。也就是说,用高级编程语言编写的应用在编译后,就转换成了利用系统调用的本地代码(图9-6)。

    图9-6 高级编程语言的函数调用在编译后变成了系统调用

    在高级编程语言中,也存在可以直接调用系统调用的编程语言。不过,利用这种方式做成的应用,移植性并不友好(也俗称为有恶意行为的应用)。例如,直接调用Windows系统调用的应用,在Linux上显然是无法运行的。

    Ps:①移植性指的是同样的程序在不同操作系统下运行时需要花费的时间等,费时越少说明移植性越好。

     

    Win编译和链接机制

     

    应用和硬件无关?

    在用C语言等高级编程语言开发的Windows应用中,大家很少能接触到直接控制硬件的指令。这是因为硬件的控制是由Windows全权负责的。

    不过,Windows提供了通过应用来间接控制硬件的方法。利用操作系统提供的系统调用功能就可以实现对硬件的控制。在Windows中,系统调用称为API(图11-1)。各API就是应用调用的函数。这些函数的实体被存储在DLL文件中。

    图11-1 应用通过操作系统间接控制硬件

    下面让我们来看一个利用系统调用来间接控制硬件的示例。例如,假设要在窗口中显示字符串,就可以使用Windows API中的TextOut函数①。TextOut的语法如代码清单11-1所示。在这段代码中,确实没有能让大家意识到硬件的参数。带有“设备描述表的句柄”这一注释的参数hdc,是用来指定字符串及图形等绘制对象的识别值,表示的也不是直接硬件设备。

    代码清单11-1 TextOut函数的语法(C语言)

    BOOL TextOut(
    	HDC hdc,              //设备描述表的句柄
    	int nXStart,          //显示字符串的x坐标
    	int nYStart,          //显示字符串的y坐标
    	LPCTSTR lpString,     //指向字符串的指针
    	int cbString          //字符串的文字数
    );

    那么,在处理TextOut函数的内容时,Windows做了什么呢?从结果来看,Windows直接控制了作为硬件的显示器。但Windows本身也是软件,由此可见,Windows应该向CPU传递了某些指令,从而通过软件控制了硬件。

    Ps:注脚

    ① 在向窗口和打印机输出字符串时,可以使用Windows提供的TextOut函数作为API。C语言提供的printf函数,是用来在命令提示符中显示字符串的函数。使用printf函数,是无法向窗口和打印机输出字符串的。

    展开全文
  • 程序是怎样跑起来的

    2020-10-13 10:28:06
    程序是怎样跑起来的 下载地址 https://pan.baidu.com/s/1X0sT3AKgY9yojDfMuixS3Q 扫码下面二维码关注公众号回复100114获取分享码 本书目录结构如下: 第 1章 对程序员来说CPU是什么 1 1.1 CPU的内部结构...

    程序是怎样跑起来的

    下载地址 https://pan.baidu.com/s/1X0sT3AKgY9yojDfMuixS3Q

    扫码下面二维码关注公众号回复100114获取分享码

     

    本书目录结构如下:

    第 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 [1] 

    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 [1] 

    第 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

     

    展开全文
  • 程序是怎样跑起来的第十章 汇编语言源文件的扩展名是.asm格式的(asm是assembler汇编器的缩写),汇编语言是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,...

    程序是怎样跑起来的第十章

    汇编语言源文件的扩展名是.asm格式的(asm是assembler汇编器的缩写),汇编语言是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,所以不同的机器就有不同的汇编语言。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。由于是直接控制硬件,且简单的任务也需要很多汇编语言语句,因此在进行程序设计时必须面面俱到,需要考虑到一切可能的问题,合理调配和使用各种软、硬件资源。这样,就不可避免地加重了程序员的负担。与此相同,在程序调试时,一旦程序的运行出了问题,就很难发现,这章也讲到了寄存器,原来寄存器和栈有同样的用处,在刚接触这本书时,我只知道CPU的组成有控制器、运算器、寄存器和时钟,老师说过寄存器很重要,在看完这章确实是这样的。寄存器也分很多种,我所知道的有标志寄存器、累加寄存器等。这章还为我们讲述了栈的用处了,前面也讲过,再次加深了印象了。还有我学到汇编语言几个指令,像mov,我们知道汇编语言的语言结构是操作码+操作数,文章所类比的是英语中的动词和宾语,语法中存在只有操作码没有操作数。

     

    转载于:https://www.cnblogs.com/LiangIT12138/p/10411758.html

    展开全文
  • 程序是怎样跑起来的第七章 这一章讲的是程序是在何种环境中运行的,开头作者解释到如果运行环境不同,程序是无法运行的。运行环境是由操作系统和硬件决定的, 同样类型的硬件可以选择安装多种操作系统,而不同的...

    程序是怎样跑起来的第七章

    这一章讲的是程序是在何种环境中运行的,开头作者解释到如果运行环境不同,程序是无法运行的。运行环境是由操作系统和硬件决定的,    同样类型的硬件可以选择安装多种操作系统,而不同的硬件类型需要不同的操作系统。说起硬件,CPU是特别重要的参数,由于CPU能解释其自身固有的机器语言,所以不同的CPU能解释的机器语言也是不同的。还有就是机器语言的程序称为本地代码,而源代码就是用C语言等编写的程序。(应用软件包收录的是本地代码),所以我们在第一节可以知道运行环境是操作系统和计算机主机(硬件)的综合。同一类型的硬件可以选择安装不同的操作系统,也就是说同一台机器上既可以安装Windows也可安Linux,根据应用的具体情况,有时只有在特定版本的操作系统上才能运行。第二小节重点是“MS-DOS应用大多都是不经过操作系统而直接控制硬件的,而Windows应用时基本上都是由Windows来完成对硬件的控制。获得其他操作系统也可以通过利用虚拟机获得。最后作者让我们了解了一下BIOS和引导程序,  BIOS和引导,BIOS是存储在ROM中,是预先内置在计算机主机内部的程序,它除了对键盘、磁盘、显卡等基本控制外,还有启动引导程序的功能,引导程序是存储在启动驱动器起始区域的小程序,操作系统的驱动器一般为硬盘,不过有时也可以是CD-ROM或软盘,引导程序的功能是把硬盘等记录的操作系统加载到内存中运行,这是因为操作系统自己不会启动。

     

    转载于:https://www.cnblogs.com/LiangIT12138/p/10411689.html

    展开全文
  • 这两天阅读了《程序是怎样跑起来的》,本书从计算机的内部结构开始讲起,以图配文的形式浅显地讲解了程序从鼠标双击到运行时,计算机是怎么处理的等内容。其和《计算机是怎样跑起来的》是一对,分别对应着《计算机...
  • 程序是怎样跑起来的第三章 这一章讲了计算机计算小数时出错的原因,计算机之所以叫"计算"机就是因为发明它主要是用来计算的,"计算"当然是它的特长,在大家的印象中,计算一定是非常准确的。但实际上, 整数和...
  • 程序是怎样跑起来的(1)

    千次阅读 2018-06-26 10:12:18
    程序是怎样跑起来的》笔记 第1章.对程序员来说CPU是什么 1:程序是什么? 指令序列,指示计算机每一步动作的一组指令。 2:程序是由什么组成的? 指令和数据,程序是指令和数据的组合体。 3:什么是机器语言...
  • 读《程序是怎样跑起来的

    热门讨论 2016-11-20 15:58:50
    我们有逻辑,并用这种高级语言表达出来时,计算机是怎样处理的呢,计算机内部是如何存储传递数据的,读了《程序是怎样跑起来的》感觉以前写的代码更生动了,可以在你眼前跑来跑去了。  本文先来介绍CPU是什么。  ...
  • 程序是怎样跑起来的》学习笔记前言1. 对程序员来说CPU是什么1.1. CPU的内部结构解析1.2. CPU是寄存器的集合体1.3. 决定程序流程的程序计数器1.4. 条件分支和循环机制1.5. 函数的调用机制1.6. 通过地址和索引实现...
  • 继续翻览《程序是怎样跑起来的》,本节是第七章:程序运行环境
  • 备注:本文是《程序是怎样跑起来的》--矢泽久雄 读书笔记 章节 摘要 备注 总结 对程序员来说 CPU 是什么 CPU 内部由寄存器,控制器,运算器和时钟四个部分组成 有些 CPU时钟部分在外部 程序启动...
  • 程序是怎样跑起来的》读书笔记 第6章:亲自尝试压缩数据 1:文件存储的基本单位是什么? 1字节(=8位),文件是字节数据的集合体。 2:文件内容用“数据的值*循环次数”来表示的压缩方法是RLE算法还是哈夫曼...
  • 读《程序是怎样跑起来的》第七章有感 本章主要讲的是程序是在环境下运行的内容,首先操作系统和硬件决定了程序的运行环境,机器语言的编码被称为本地代码,程序员用C语言等编写的程序,在编写的阶段仅仅是文本文件...
  • 程序是怎样跑起来的第十一章 第十一章讲述了硬件控制方法 Windows提供了通过应用来间接控制硬件的方法,借助的是输入输出命令,IN/OUT这也是汇编语言的助记符,IRQ中断请求,在程序中有很大的价值,就像在处理文档...
  • 程序是怎样跑起来的。。。刚刚看别人些的东西一点点小总结。 一、高级语言----机器语言  1、从高级语言到机器语言这个过程大概有以下几个 步骤:  a、预处理:删除注释、展开宏定义、处理预编译指令 等等,最后...
  • 读《程序是怎样跑起来的》第九章有感第九章讲的是程序与应用的关系。在没看第九章时,我只知道二者是有区别的,但具体的不同是什么,我个人是一还不懂。对于我这个接触计算机没多久的人来说,如果不学这门课,那么我可能...
  • 计算机基础原理(包含程序是怎样跑起来的上中下) https://www.cnblogs.com/xmusxy/category/1469722.html 《程序是怎样跑起来的》(上) 学习笔记 此书前言 无论任何事情,了解其本质非常重要。只有了解了...
  • 继续翻览《程序是怎样跑起来的》,本节是第十章:通过汇编语言了解程序的实际构成
  • 想对计算机系统做些深入了解,故整了几本书翻翻,这里做个记录。 从《程序是怎样跑起来的》开始,本节是第一章:CPU是什么。
  • 继续翻览《程序是怎样跑起来的》,本节是第二章,数据是用二进制表示的
  • 程序是怎样跑起来的9.26 : 1~10 9.27 : 11~39 9.28 : 40~68 9.29 : 69~103 9.30 : 104~153

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 559
精华内容 223
关键字:

程序是怎样跑起来的