1)简述编译程序与翻译程序、汇编程序的联系与区别。
编译器将高级语言翻译成汇编语言,然后通过汇编程序将汇编语言翻译成机器语言。但是编译器只能将源语言编译成目标语言。编译程序是翻译程序之一,汇编程序是将汇编语言翻译成机器语言。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
一般也可以划分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。
词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词
语法分析:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位
语义分析与中间代码产生:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。
优化:优化的任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。优化的主要方面有:公关子表达式的提取、循环优化、删除无用代码等等。
目标代码生成:优化的任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。优化的主要方面有:公关子表达式的提取、循环优化、删除无用代码等等。
3)简述解释程序与编译程序的区别。
编译程序:先整体编译在一次性执行,执行程序时只执行目标程序。
解释程序:边解释边执行,不会生成目标程序。
4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解它的基本思想与采用的技术路线,谈谈它对安卓软件生态会会有什么影响。
方舟编译器首次在Java领域将虚拟机干掉了,也是软件史上首次将Java/C/C++等混合代码一次编译成机器码直接在手机上运行,彻底告别Java的JNI额外开销;另一方面,方舟编译器用空间换性能,直接将编译器的代码优化搬到了开发者环境,不再被手机端的硬件资源所限制,为代码优化提供了无限可能。给安卓带来了更高的编译效率和更持久的流畅水平。