1)简述编译程序与翻译程序、汇编程序的联系与区别。
编译是将源代码文件以字符流的形式进行处理,进行词法和语法的分析,然后通过汇编器将源代码指令转变成汇编指令,编译预处理主要对文件中的四种情况处理:宏定义、#include文件包含、条件编译、特殊符号。
翻译程序是把源代码文件翻译成另一种语言。
汇编程序是把汇编语言代码翻译成目标机器指令的程序。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
第一阶段:词法分析
词法分析的任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字(begin、end、if、for、while),标识符、常数、运算符和界符(标点符号、左右括号)。
第二阶段:语法分析
语法分析的任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如“短语”、“句子”、“程序段”和“程序”等。通过语法分析,确定整个输入串是否构成语法上正确的“程序”。
第三阶段:词义分析与中间代码产生
这一阶段的任务是:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。
第四阶段:优化
优化的任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。
第五阶段:目标代码生成
这一阶段的任务是:把中间代码(或经优化处理之后)变换成特定机器上的低级语言代码。
3)简述解释程序与编译程序的区别。
编译:专指由高级语言转换为低级语言。工作效率高,即时间快、空间省;交互性与动态特性差、可移植性差。大多数PL采用此种方法翻译
解释:接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句。工作效率低,即时间慢、空间费;交互性与动态特性好、可移植性好。早期的Basic和现在的Java等。
4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解它的基本思想与采用的技术路线,谈谈它对安卓软件生态会有什么影响。
编译器是连接人类世界与机器世界之间的一座桥梁,任何在手机上的程序都需要经历软件开发的过程,软件开发使用的语言是易于程序员理解的高级语言,程序在手机上运行需要转换成可以高效执行的机器码,这样的转换过程就是由编译器完成的。可以说编译器是用来生成软件的软件,是连接软件与芯片的桥梁,其性能,效率直接影响到最基础的消费者体验。
方舟编译器可供开发者在开发环境一次性的将高级语言编译为机器码,手机安装应用程序后可全速运行程序,带来效率上的极大提升。根据华为实验室的测试数据,EMUI 9.1在仅仅对系统组件System Server应用了华为方舟编译器后,就带来了系统操作流畅度提升24%,系统响应性能提升44%,三方应用操作流畅度提升60%。华为的方舟编译器无疑是对人类文明的进步又做出一大贡献。
目前已经有40多个顶级应用通过方舟的编译上架到华为应用商城,并且欢迎未来有更多的第三方使用方舟编译器。同时,方舟编译器所有代码也将开源给业界。