第一章——编译器工作的主要流程

来源:互联网 发布:java集合用大括号 编辑:程序博客网 时间:2024/05/18 13:08

编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。

一个现代编译器的主要工作流程:

源代码 (source code) →源代码就是人类可读的按程序设计语言编写的代码

预处理器 (preprocessor)→ 编译开始之前由编译器调用的独立程序。预处理器可以删除注释、包含其他文件以及执行宏(宏macro是一段重复文字的简短描写)替代

编译器 (compiler)将“高级语言”翻译为“机器语言(低级语言)”的程序

 汇编程序 (assembler) → 把汇编语言书写的源程序,变为机器语言表示的目标程序

目标代码 (object code) 指源代码经编译后,产生的能被 CPU直接识别的二进制代码

 链接器 (Linker)→ 将由编译器汇编器生成的目标文件外加库链接为一个可执行文件

                                 静态链接的最大缺点是生成的可执行文件太大,需要更多的系统资源,在装入内存时也会消耗更多的时间。静态链接对服务器的负载很小,但不能随时更新。

                                动态链接:把链接这个过程推迟到了运行时再进行,这就是动态链接(Dynamic Linking)的基本思想。


可执行程序 (executables)。这类文件可以“单独运行”,或者理解为“有生命”的文件!


脚本:不是所有的执行档,都只存有电脑能阅读的资料。以脚本语言撰写的脚本档案,都可以是执行档,而且内含的资料可被人类阅读,多数以ASCII文本存盘。原因是:脚本语言无需经过编译器预先编译,就可经过直译器(如Perl、Python、Shell)执行