若想写出能产生高效机器码的高级语言程序,确有必要了解编译器和链接器将高级语言源语句转换为可执行机器码的过程。编译器理论的完整说明超出了本书范围;不过本章我们将阐释转换的基础知识,以便理解高级语言编译器的种种局限性,从而在这些限制内工作。
本章将探讨如下话题:
●编程语言用到的各种输入文件类型
●编译器和解释器的区别
●典型编译器是如何处理源文件,并生成可执行程序的
●优化的过程,以及编译器为什么无法对给定源文件生成尽可能好的代码
●编译器所生成文件的各种类型
●常见的目标文件格式,如COFF和ELF
●内存组织和对齐,其影响到编译器所生成可执行文件的大小和效率
●链接器选项对代码效率的影响
这些知识是所有后续章节的基础。要想协助编译器产生足够好的代码,本章内容是不可或缺的。首先我们来讨论编程语言的文件格式。