第一次作业

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

    从功能上看,一个编译程序就是一个语言翻译程序,编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体过程

翻译程序是指把高级语言源程序翻译成机器语言源程序的软件。
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。
编译程序是先完整编译后运行的程序;解释程序是一句一句翻译且边翻译边执行的程序。

如果源语言是“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。
如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序称为汇编程序。

2
)编译过程包括哪几个主要阶段及每个阶段的主要功能
编译过程一般分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个主要阶段。各个阶段的主要功能如下:
词法分析:读入源程序,对构成源程序的字符流进行扫描和分解,识别出一个个单词,。
语法分析:在词法分析的基础上,将单词序列分解成各类语法短语,确定整个输入串是否构成语法上正确的程序。
语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息。
中间代码生成:将源程序翻译成一种复杂性介于源程序与目标程序之间的内部形式。
代码优化:对前阶段产生的中间代码进行等价交换,目的是使将来生成的目标代码更为高效。
目标代码生成:把中间代码变换成待定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。

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

       编译程序能够生成出目标程序,解释程序是不行的;编译程序是整体编译完了,然后在一次性的执行。

       而解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。

      编译器的工作效率高,即时间快、空间省;交互性与动态特性差、可移植性差。

      解释器的工作效率低,即时间慢、空间费;交互性与动态特性好、可移植性好。。

4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解它的基本思想与采用的技术路线,谈谈它对安卓软件生态会有什么影响。
方舟编译器提供了全新的系统及应用的编译和运行机制,从动态编译变为静态编译,就是直接将高级语言直接编译成机器码,彻底消除了虚拟机动态编译的额外开销,
实现了开发和运行效率的兼容并举。安卓系统使用Java作为编程语言,易于开发,但是不会将代码直接编译成机器语言,程序运行时有相当一部分代码还需要通过手机上
的虚拟机临时同步编译,影响程序执行的效率。华为方舟编译器采取了静态编译的方式,是首个取代了安卓虚拟机模式的静态编译器。华为方舟编译器的静态编译方式可
将语言里的动态特性直接翻译成机器码,手机安装应用程序后可全速运行程序,彻底消除虚拟机的弊病,带来效率上的极大提升。在提高手机运行速度的背后,是方舟
编译器可以将JAVA代码编译成机器码,让手机系统直接执行的技术,可以从根本上杜绝了原有安卓机制造成的卡顿。








你可能感兴趣的:(第一次作业)