---恢复内容开始---
1.简述编译程序与翻译程序、汇编程序的联系与区别。
答:翻译程序是指把高级语言源程序翻译成机器语言源程序,它包含了两种:一种是编译程序,另一种是解释程序。
编译程序是指完成从源程序到目标程序的翻译工作,它是先将代码完整的编译后运行的程序。
汇编程序是将汇编语言源程序翻译成机器语言程序的语言翻译程序。
翻译程序是将“高级语言”翻译成“低级语言”,而汇编程序是将汇编语言翻译成机器语言。
2.编译过程包括哪几个主要阶段及每个阶段的主要功能。
答:编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成这6个阶段。
词法分析功能是对输入的高级语言源程序进行词法分析,对字符进行扫描和分解,把字符串形式分解为单词符号串形式。
语法分析是在词法分析的基础上将单词序列分解成各类语法短语,识别各类语法的层次关系,并将其生成为语法树的形式。
语义分析主要是审查源程序有无语义错误,为代码生成阶段收集类型信息。
中间代码生成在语法分析的基础上,对程序进行语义分析,产生出表达程序语义的内部表达形式(中间代码)。
中间代码优化是按照等价变换的原则,对语义分析器产生的中间代码序列进行等价变换,删除多余的操作。
目标代码生成的功能是指把优化后的中间代码变成机器指令代码,得到可在目标机器上执行的机器语言程序。
3.简述解释程序与编译程序的区别。
答:解释程序与编译程序都属于翻译程序。
编译程序是先将代码完整编译后再运行的程序,解释程序是将代码一句一句的翻译并且边翻译边执行的程序。
4.了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解它的基本思想与采用的技术路线,谈谈它对安卓软件生态会有什么影响。
答:华为方舟编译器极大地改善了安卓应用编译效率,将原先的边解释边执行(动态编译)转变为全程机器码高效运行程序。它采用了全新的系统及应用的编译和运行机制,对所有的Java语言翻译成机器语言(静态编译),从而抛弃了虚拟机,解决了安卓的低效问题。