(1)简述编译程序与翻译程序、汇编程序的联系与区别
翻译程序:是一种系统程序,它主要包括编译程序以及汇编程序,它是将计算机编程语言编写的程序翻译成为另一种计算机语言的一般来说等价的程序。
编译程序:是将高级语言转换为机器语言,他是面向编译器的原理或高级语言的编译产生过程等原理。
汇编程序:是将汇编指令转换为机器语言,它是面向硬件层的语言。
翻译程序把源程序翻译成目标程序的语言处理程序。编译程序将源语言源程序作为输入,将语句解释成指令执行,得到结果。两者是逆向思维,前者是为了达到某种目的的要求,后者是实现某种目的的结果,前者难度大。
(2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
编译过程包括五个阶段,它们分别是词法分析、语法分析、语义分析和中间代码的生成和优化、目标代码生成
词法分析的功能是:
输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字(begin、end、if、for、while),标识符、常数、运算符和界符(标点符号、左右括号)。编译:
语法分析的任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如“短语”、“句子”、“程序段”和“程序”等。通过语法分析,确定整个输入串是否构成语法上正确的“程序”。
语义分析的功能是:
对语法分析所识别出的各类语法范畴,这一阶段通常包含两个方面的工作。首先,对每种语法范畴进行语义i安插,例如,变量是否定义、类型是否正确等等。
中间代码的生成与优化功能:
分析完含义,进行初步翻译(产生中间代码)。如果语义正确,进行另一方面工作,即进行中间代码的解释。这一阶段所依循的是语言的语义规则。通常使用属性文法描述语义规则。
优化的任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。
目标代码的生成的功能是:
把中间代码(或经优化处理之后)变换成特定机器上的低级语言代码。这阶段实现了最后的翻译,它的工作有赖于硬件系统结构和机器指令含义。
(3)简述解释程序与编译程序的区别。
解释程序:它是接受接受到某种高级语言的一个语句输入后进行解释直接执行,,它不产生目标程序文件,通常一个程序在执行期间一直有解释程序守候。
编译程序:它是将源程序进行编译之后最终转变为目标程序,然后输入数据之后才执行得到结果的。
解释程序不产生目标程序文件,编译程序会产生目标程序文件。
(4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。
方舟编译器是华为专门为软件厂商开发的一款编译器,能够有效解决安卓程序“边解释边执行”的低效率问题。它是采用全程执行机器码高效运行程序,架构进一步得到优化,性能也有明显提升。相较与此前流畅度,通过华为方舟编译器编译后的程序系统,操作流畅度提升24%,系统响应速度提升44%,三方应用操作流畅度提升60%。一方面,方舟编译器首次在Java领域将虚拟机干掉了,也是软件史上首次将Java/C/C++等混合代码一次编译成机器码直接在手机上运行,彻底告别Java的JNI额外开销,也彻底告别了虚拟机GC内存回收带来的应用进程掉线,使操作流畅度大幅提升。另一方面,方舟编译器用空间换性能,直接将编译器的代码优化搬到了开发者环境,不再被手机端的硬件资源所限制,为代码优化提供了无限可能。方舟编译器通过编译阶段和运行阶段的双向加持,将静态编译动态语义最大的两大难点一一解决:一是设计数据模型,二是如何在运行时高效获得动态信息。他能够很大的促进安卓市场升级。