能够把C语言等高级编程语言编写的源代码转换成本地代码的程序称为编译器。 每个编写源代码的编程语言都需要其专用的编译器。将C 语言编写的源代码转换成本地代码的编译器称为 C编译器。编译器首先读人代码的内容, 然后再把源代码转换成本地代码。编译器中就好像有一个源代码同本地代码的对应表。但实际上,仅仅靠对应表是无法生成本地代码的。 读入的源代码还要经过语法解析、句法解析、语义解析等,才能生成本地代码。根据CPU类型的不同,本地代码的类型也不同。 因而,编译器不仅和语言的种类有关,和CPU 的类型也是相关的。例如,Pentium等x86系列CPU用的C编译器, 同PowerPC这种CPU用的C编译器就不同。从另一个方面来看, 这其实是非常方便的。因为这样一来,同样的源代码就可以翻译成适用于不同CPU 的本地代码了为编译器本身也是程序的一种, 所以也需要运行环境。例如,有Windows用的C编译器、 Linux用的C编译器等。此外,还有一种交叉编译器,它生成的是和运行环境中的 CPU不同的CPU所使用的本地代码。例如,在Pentium系列 CPU的Windows这一运行环境下,也可以作成SH 及MIPS等CPU用的WindowsCE 程序, 而这就是通过使用交叉编译器来实现的。读到这里大家可能稍微有一些混乱, 不妨让我们来梳理一下。大家在计算机软件商店等处购买编译器时, 可能会跟店员说明3点:“想要买的是何种编程语言用的编译器” “编译器生成的本地代码是用于哪种CPU的”以及 “该编译器是在什么环境下使用的”。 而实际上,通常只要说明产品名及版本就可以了。
① SH(SuperH)是日立制作所和三菱电机共同成立的瑞萨技术开发的 CPU。该CPU有多种类型,在手机、车载GPS、PDA、 游戏机等设备上均有使用。
② WindowsCE是采用了MIPS、SH等CPU的PDA 及嵌入式开发领域广泛使用的操作系统。现在编译器基本上不需要购买, 都已经默认集成到开发IDE中了。译者注