编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段,其中,(4)并不是每种编译器都必需的。

admin2019-06-12  69

问题 编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段,其中,(4)并不是每种编译器都必需的。

选项 A、语法分析和语义分析
B、中间代码生成和目标代码生成
C、中间代码生成和代码优化
D、代码优化和目标代码生成

答案C

解析 本题考查程序设计语言的编译器原理。
    从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或生成一种需要进一步处理的中间代码的编译器(又叫级联)。典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必须采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。
    编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其他平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如,自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如 FORTRAN的DOALL指令)。
    编译器后端主要负责分析,优化中间代码以及生成机器代码。一般说来所有的编译器分析、优化、变型都可以分成两大类:函数内还是函数之间进行。显然,函数间的分析、优化更准确,但需要更长的时间来完成。
    编译器分析的对象是前端生成并传递过来的中间代码,现代的优化型编译器常常用好几种层次的中间代码来表示程序,高层的中间代码接近输入的源程序的格式,与输入语言相关,包含更多的全局性的信息,和源程序的结构;中层的中间代码与输入语言无关,低层的中间代码与机器语言类似。不同的分析,优化发生在最适合的那一层中间代码上。
    并不是所有的编译器都会有目标代码或代码优化的过程。
转载请注明原文地址:https://jikaoti.com/ti/VFf7FFFM
0

最新回复(0)