1)简述编译程序与翻译程序、汇编程序的联系与区别。
编译程序将源语言(高级语言)翻译成汇编语言或机器语言(低级语言)
翻译程序将一种语言程序翻译成另一种语言的等价程序
汇编程序是一个翻译程序,它把汇编语言程序翻译成机器语言程序
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
词法分析:对构成源程序的字符流进行扫描和分解,从而识别出一个个单词或符号
语法分析:在词法分析的基础上将单词序列分解成各类语法短语,并生成语法树
语义分析:审查源程序有无语义错误
中间代码生成:将源程序变成一种内部表示形式,结构简单,含义明确
代码优化:对前一阶段产生的中间代码进行变换或改造,使生成的目标代码更为高效,省时间和省空间
目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码
3)简述解释程序与编译程序的区别。
解释程序无需生成中间代码,在运行中编译
编译程序会产生中间代码,先编译后执行
4)华为方舟编译器
2019年8月31日,华为方舟编译器开源网站正式上线。该编译器最大的特点就是将各种类型移动终端设备编译成统一的语言IR实现共平台,从而提高编译的运行效率,降低开发者的运营成本。同时,边解释边执行这一特性也让应用在运行时的开销更小。
同其他编译程序不同,方舟编译器是先将一个高级语言程序翻译成另一个统一规范的高级语言程序,再翻译成二进制代码文件从而执行可执行代码。方舟IR的目标是尽可能完整详细地提供源程序的信息,在编译的过程中,其主要思路是在前端生成IR,在终端优化IR,在后端生成汇编。因此中间代码的生成与优化都会完整的呈现出来,为开发者的阅读提供了很大的便利。
目前,方舟IR编译器仅支持java语言和Kotlin程序字节码,其他类型的语言还在进一步的开发中,但是,他针对多终端统一化以领先者的姿态率先开源,一方面有助于提升其他开发者的编程积极性,另一方面也能够节省公司的开发资源。更重要的是给整个国际安卓开发环境指定了一定的方向。