1)简述编译程序与翻译程序、汇编程序的联系与区别。
联系:编译程序、翻译程序和汇编程序都是把一种语言编写的程序转化成用另一种语言编写的程序。一个编译程序就是一种翻译程序,汇编程序是翻译程序的一种。
区别:编译程序是将高级的源语言转化为低级的目标语言。翻译程序是通过语言之间转化,最终完成的目标程序是一个等价的程序。汇编程序是把汇编语言程序翻译成机器语言程序。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。
词法分析:对读入源程序的字符流进行扫描与分解,识别各个出有集体含义的字符。
语法分析:根据语言的语法规则检查源程序的语法是否正确。若错误则输出错误的信息,正确则把经过“词法分析”识别出来的单词序列分解成各类语法短语,构造中间语言形式的内部程序。
语义分析:进一步检查源程序语义正确性,为代码生成接段收集类型信息。
中间代码生成:经过“语法分析”经和“语义分析”后,一些编译程序将源程序转变成一种内部表现形式,称之为“中间代码”。
代码优化:对“中间代码”进行变换改造使其更加高效,达到节省时间和空间的目的。
目标代码生成:把“优化过的中间代码”转化为特定机器上的绝对指令代码或可重定位代的指令代码或汇编指令代码,从而形成目标程序。
3)简述解释程序与编译程序的区别。
编译程序可以在编译器支持的系统平台上运行,在程序执行时是不依靠其他软件环境;
解释程序则在执行需要通过软件环境来对程序进行解释。
4)了解新开源的华为方舟编译器,理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。
基本思想:方舟编译器的中间表示(IR)转换器将前端输入转换成方舟IR,并输送给后端的优化器,最终生成二进制文件,二进制文件与编译器运行时库文件链接生成可执行文件,在方舟的运行环境中就可执行该文件。
采用的技术路线:提供了全新的系统及应用的编译和运行机制,从动态编译变为静态编译,直接将高级语言直接编译成机器码。
对安卓软件生态的影响:方舟编译器可实现应用中多种编程语言联合编译优化提升性能,而且在支持多平台的同时,根据设备特征提供便捷的开发与部署策略提升效率。彻底消除了虚拟机动态编译的额外开销,实现了开发和运行效率的兼容并举。