1)简述编译程序与翻译程序、汇编程序的联系与区别。
答:被翻译的程序称为源程序;
翻译出来的程序称为目标程序或目标代码;
将汇编语言和高级语言编写的程序翻译成等价的机器语言,实现此功能的程序称为翻译程序;
把汇编语言写的源程序翻译成机器语言的目标程序称为汇编程序;
解释程序不是直接将高级语言的源程序翻译成目标程序后再执行,而是一个个语句读入源程序,即边解释边执行;
编译程序是将高级语言写的源程序翻译成目标语言的程序。
关系:汇编程序、解释程序和编译程序都是翻译程序。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
答:编译过程包括词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成5 个阶段。词法分析的功能是对输入的高级语言源程序进行词法分析,识别其中的单词符号,确定它们的种类,交给语法分析器,即把字符串形式的源程序分解为单词符号串形式。语法分析的功能是在词法分析结果的基础上,运用语言的语法规则,对程序进行语法分析,识别构成程序的各类语法范畴及它们之间的层次关系,并把这种层次关系表达成语法树的形式。词义分析和中间代码生成的功能是在语法分析的基础上,对程序进行语义分析,“理解”其含义,产生出表达程序语义的内部表达形式(中间代码)。优化的功能是按照等价变换的原则,对语义分析器产生的中间代码序列进行等价变换,删除其中多余的操作,对耗时耗空间的代码进行优化,以期最后得到高效的可执行代码。目标代码生成的功能是把优化后的中间代码变换成机器指令代码,得到可在目标机器上执行的机器语言程序。
3)简述解释程序与编译程序的区别。
答:编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。
4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解它的基本思想与采用的技术路线,谈谈它对安卓软件生态会有什么影响。
答:方舟编译器所采用的翻译方法,与此前的编译器有所不同。现有的Android系统是在手机环境中进行编译,通过ART虚拟机(Android Runtime)一边翻译一边执行,这会造成资源占用过多,进而影响到程序执行的效率。方舟编译器则能让开发者在开发过程中直接把多种高级语言编译为机器可识别的指令,然后打包成APK,手机在安装程序之后便可直接识别并运行程序。从而提高软件的运行效率。系统的运行改善是直观的。由于没有了ART虚拟机占用系统资源,且不用虚拟机编译过程,程序的运行效率将会得到提高。同时,由于方舟编译器在编译时为程序配备了及时回收的内存处理机制,相较于之前系统需要全局暂停才能回收资源的方式,系统在运行的流畅度上得到了提升。