摘要: 通过使用操作系统提供的系统调用,程序员就没必要编写直接控制硬件的程序了。而且,通过使用高级编程语言,有时甚至也无需考虑系统调用的存在。这是因为操作系统和高级编程语言能够使硬件抽象化。这是个非常了不起的处理。下面就让我们来看一下硬件抽象化的具体实例。代码清单 9-2 是用C 语言编写的往文件中写人字符 阅读全文
posted @ 2023-02-07 11:24 嘎嘎鸭~ 阅读(28) 评论(0) 推荐(0)
摘要: 操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的。这些函数及调用函数的行为统称为系统调用(systemcall),也就是应用对操作系统(system)的功能进行调用(call)的意思。在前面的程序中用到了 time() 及 printf() 等函数,这些函数内部也都使用了系统调用。 阅读全文
posted @ 2023-02-07 11:14 嘎嘎鸭~ 阅读(63) 评论(0) 推荐(0)
摘要: 制作应用的程序员们意识到一点:那就是你们制作的不是硬件,而是利用操作系统功能的应用。 下面就来看一下操作系统是如何给开发人员带来便利的。代码清单9-1 表示的是,在 Windows 操作系统下,用C语言制作一个具有表示当前时间功能的应用。time 是用来取得当前日期和时间的函数printf0) 是用 阅读全文
posted @ 2023-02-07 11:08 嘎嘎鸭~ 阅读(25) 评论(0) 推荐(0)
摘要: 操作系统的原型:仅具有加载和运行功能的监控程序。 通过事先启动监控程序,程序员就可以根据需要的各种程序加载到内存中运行。如下图: 在利用监控程序编写程序的过程中,发现很多程序都要共通的部分。因此,基本的输入输出部分的程序就被追加到了监控程序中。初期的操作系统就这样诞生了(图 9-2 )。 之后,随着 阅读全文
posted @ 2023-02-07 09:43 嘎嘎鸭~ 阅读(50) 评论(0) 推荐(0)
摘要: Q:编译器和解释器有什么不同?A:编译器是在运行前对所有源代码进行解释处理的。而解释器则是在运行时对源代码的内容一行一行地进行解释处理的。 Q:“分割编译”指的是什么?A:将整个程序分为多个源代码来编写,然后分别进行编译,最后链接成一个EXE文件。这样每个源代码都相对变短,便于程序管理。 Q:“Bu 阅读全文
posted @ 2023-02-07 09:31 嘎嘎鸭~ 阅读(22) 评论(0) 推荐(0)
摘要: EXE文件的内容分为再配置信息、变量组和函数组,这一点想必大家都清楚了吧。不过,当程序加载到内存后,除此之外还会额外生成两个组,那就是栈和堆。栈是用来存储函数内部临时使用的变量(局部变量),以及函数调用时所用的参数的内存区域。堆是用来存储程序运行时的任意数据及对象的内存领域(图8-10)。 EXE文 阅读全文
posted @ 2023-02-07 09:29 嘎嘎鸭~ 阅读(28) 评论(0) 推荐(0)
摘要: 在程序运行时,虚拟的内存地址会转换成实际的内存地址。链接器会在EXE文件的开头,追加转换内存地址所需的必要信息。这个信息称为再配置信息。 EXE文件的再配置信息,就成为了变量和函数的相对地址。相对地址表示的是相对于基点地址的偏移量,也就是相对距离。实现相对地址,也是需要花费一番心思的。在源代码中,虽 阅读全文
posted @ 2023-02-07 09:28 嘎嘎鸭~ 阅读(25) 评论(0) 推荐(0)
摘要: Windows以函数的形式为应用提供了各种功能。这些形式的函数称为API (应用程序接口)。例如,Samplel.c中调用的MessageBox0,它并不是C语言的标准函数,而是Windows提供的API的一种。MessageBox()提供了显示消息框的功能。 Windows中,API的目标文件,并 阅读全文
posted @ 2023-02-07 09:27 嘎嘎鸭~ 阅读(47) 评论(0) 推荐(0)
摘要: 下图的错误消息表示的是无法解析Sample1.obj参照的外部符号。 外部符号是指其他目标文件中的变量或函数。sprintf及MessageBoxA是目标文件中sprintf及MessageBox()的名称。代码中记述的函数名同目标文件中的函数名有一些差异,不过大家只需把它理解成这是C编译器的规定即 阅读全文
posted @ 2023-02-07 09:26 嘎嘎鸭~ 阅读(24) 评论(0) 推荐(0)
摘要: 编译器转换源代码后,就会生成本地文件。不过,本地文件是无法直接运行的。 编译器转换源代码后,就会生成本地文件。不过,本地文件是无法直接运行的。为了得到可以运行的EXE文件,编译之后还需要进行“链接”处理。下面,就让我们使用Borland C++ Compiler5.5(以下称为Borland C++ 阅读全文
posted @ 2023-02-07 09:24 嘎嘎鸭~ 阅读(46) 评论(0) 推荐(0)