- (简答题) 简述什么是编译的前端和后端,及为什么要把编译的过程划分为前端和后端?
前端主要由与源程序有关但与目标机无关的那些部分组成。这些部分通常包括词法分析、语法分析、语义分析与中间代码的产生,有些代码优化工作也可包括在前端。后端包括编译程序中与目标机有关的那些部分,如与目标机有关的代码优化和目标机的生成等。
将编译过程划分成前端和后端,主要目的是在多种源语言和多种目标语言的开发过程中,可以灵活搭配组合,消除重复开发的工作量,提高编译系统的开发效率。
- (简答题) 在编译过程中采用哪些技术手段可以实现编译程序可改变目标机?请说明理由。
-
(简答题) 计算机执行用高级语言编写的程序有编译和解释两种途径,简述它们各自的特点和主要区别是什么?
主要区别是编译程序产生目标程序,解释程序不产生目标程序 -
(简答题) 请分别简要概述“移植”和“自编译方式”的实现过程。
-
(简答题) 简述编译程序生成的常用方法,并简要说明其实现过程。
根据目标代码用机器语言去实现 ,已知一种语言的编译器构造另一种语言的编译器,移植,自编译方式
-
(简答题) 画出编译程序的逻辑结构,简述其中每一部分的主要功能。
-
(简答题) 简述符号表在编译中的作用,以及对符号表有哪些操作。
构造、查找或更新符号表 -
(简答题) 根据C语言的编程经验,说明编译过程中有哪些典型错误,编译时能否把程序的所有错误找出来,如果不能,请举例说明。
词法分析:非法字符
语法分析:括号不匹配、缺少
语义错误:说明错误、作用域错误。
编译时不能把程序的所有错误找出,比如说除数为零,引用数组元素下标错误