第一次作业 编译原理概述

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

翻译程序是指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。

翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。另一种是解释程序,它的执行过程是翻译一句执行一句,并且不会生成目标程序。

编译程序是先完整编译后运行的程序,如C、C++等;

解释程序是一句一句翻译且边翻译边执行的程序,如JavaScript、Python等。附C语言编译链接过程:

汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。

编译程序与汇编程序的区别:如果源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序称为汇编程序。

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

编译程序的工作过程一般也可以划分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。

词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号)

语法分析:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴)

词义分析与中间代码产生:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。

优化:对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。

目标代码生成:把中间代码(或经优化处理之后)变换成特定机器上的低级语言代码。这阶段实现了最后的翻译,它的工作有赖于硬件系统结构和机器指令含义。

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

编译型语言在编译过程中生成目标平台的指令,解释型语言在运行过程中才生成目标平台的指令。编译是在开发期将程序源代码变成直面系统内核机器码,编译的程序可以在编译器支持的系统平台上运行,在程序的执行期是不依靠其他软件环境的;
解释的程序则在执行期仍然需要其开发语言的软件环境来对程序进行解释,之后才能被系统底层接受和执行,所以在用户来看,其程序执行效率低,对第三方软件环境依赖程度高

4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解它的基本思想与采用的技术路线,谈谈它对安卓软件生态会有什么影响。

  方舟编译器解决安卓程序程序“边解释边执行”的低效。Android 平台大部分的应用使用 Java 语言写的,CPU 只能理解汇编指令,无法直接识别 Java 语言的虚拟机指令。由于Android采用“边解释边执行”的模式,代码运行的效率很低,必然给人们使用很卡的感觉。Java虚拟机将Java高级语言转化为机器语言的过程,必然会造成Android的卡顿。

  方舟编译器的最大优势在于绕过虚拟机,直接将高级语言变成机器码,无需再通过Android系统内置的编译器。方舟编译器的应用在开发阶段已经完成,用户直接下载apk即可使用。应用程序安装后可全速运行程序,彻底脱离虚拟机,极大提升了系统运行效率。方舟编译器还具备垃圾回收机制、对外开源等特点。

猜你喜欢

转载自www.cnblogs.com/lingcode/p/11451704.html