from Creating, Compiling and Running Your Program

[adsense][/adsense]

compilation的目的在于将高阶语言转成可执行的machine code。通常中间会先转成assembly language。一个程式要能执行,必须经过六大步骤(该行为由compiler负责),分别是:语汇分析、语法分析、语意分析、产生中间码、最佳化、产生目的码。纯直译式(interpretation)的语言不需要编译,执行的时候才由直译器进行这六个步骤,Perl便是属于这类;纯编译式(compilation)的语言在程式执行前需要进行编译,完成上述的六大步骤之后得到执行档,此执行档用到底下硬体平台的指令集和相关的函式库,所以直接就可执行,不需要直译器,这样的执行档我们称为 native code,C/C++便是属于这类。

除了纯直译和纯编译的语言之外,还有一种叫做混合式语言,传统的 Java 就属于这一类。Java 程式需要编译器来进行前四大步骤(语汇分析、语法分析、语意分析、产生中间码),产生出来的中间码就是 class 档。这些 class 档不能直接执行,需要直译器来进行最后的翻译步骤才能执行。

编译程式包含一群子程式,下列何者不属于编译程式的子程式?
a.分析程式(scanner) b.执行程式(execute)
c.剖析程式(parser) d.目的码产生程式(code generator)
九十四年公务人员初等考试试题资料处理大意