作业1 了解编译原理(2019.9.4)

1)简述编译程序与翻译程序、汇编程序的联系与区别。

从功能上看,一个编译程序就是一个语言翻译程序。语言翻译程序把一种语言书写的程序翻译成另一种语言的等价程序。汇编程序是一个翻译程序,它把汇编语言程序翻译成机器语言程序。

2)编译过程包括哪几个主要阶段及每个阶段的主要功能。

编译过程主要分为六个阶段:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成。

主要功能:词法分析:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。

语法分析:在词法分析的基础上将单词序列分解成各类语法短语,如“程序”,“语句",”表达式“等。这种语法短语也称作语法单位,可以表示成语法树。

语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息。

中间代码生成:在进行上述的语法分析和语义阶段工作之后,有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。

代码优化:对前一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更高效。

目标代码生成:把中间代码变成特定机器上的绝对指令代码或可以重定位的指令代码或汇编指令代码。

3)简述解释程序与编译程序的区别。

解释程序的输入包括源程序和源程序的初始数据,它不生成目标代码,直接产生结果,但是编译程序会产生目标代码。

4)了解新开源的华为方舟编译器,理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。

基本思想:应用级编译优化,方舟编译器采用全程执行机器码高效运行程序,架构进一步得到优化,可供开发者在开发环境一次性的将高级语言编译为机器码,手机安装应用程序后可全速运行程序,带来效率上的极大提升。

技术路线:易于开发,但是不会将代码直接编译成机器语言,程序运行时有相当一部分代码还需要通过手机上的虚拟机临时同步编译,影响程序执行的效率。华为方舟编译器采取了静态编译的方式,是首个取代了安卓虚拟机模式的静态编译器。

会使安卓软件用起来不会那么卡,会更流畅,使用感会好很多。

 

posted @ 2019-09-04 11:28  小婷G899  阅读(186)  评论(0编辑  收藏  举报