201706120024 编译原理第一次作业

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

翻译方式分为解释型与编译型

编译型:一次性把源程序翻译成目标程序后再执行,再这过程中,源程序首先经过编译程序来将源程序翻译成汇编语言程序。也即是将源程序的高级语言(如c语言)翻译成由汇编语言组成的低级语言。后再经过汇编程序将汇编语言程序转换为计算机可以直接识别的机器语言

翻译型:不产生目标程序文件,与编译型不同,编译型需要先通过链接生产可执行文件后再运行,而翻译型不区别翻译阶段与执行阶段,翻译源程序后直接执行。而这翻译过程中通过解释程序来进行翻译。

所以

编译程序:在编译过程中,将高级语言装换成低级语言(即汇编语言或机器语言)时执行程序

汇编程序:在汇编过程中,将汇编语言装换为机器可直接识别的机器语言时执行的程序

解释程序:在翻译过程中,将高级语言直接翻译为机器可直接识别的机器语言并执行这一过程中所执行的程序。

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

编译过程主要分成6个阶段。

词法分析:对源程序的字符流进行扫描和分解,从而识别出一个个单词。列如static经过分析后不会变成sta tic两个意义不明单词。

语法分析:为编译过程的第二阶段,在该阶段将在第一阶段后的单词序列分解成各类语法短语,这语法可以是程序,语句,表达式等等。即将原来的单词组成句子。

语义分析:语义分析是审查程序有误语义错误,为代码生产阶段收集类型信息,在该过程中,可检查源程序是否出现语法错误等等。

中间代码生成:在经过语法分析与语义分析后,有的编译程序将源程序变为一种表示形式,这种表示形式就是中间代码。它是一种结构简单,含义明确的记号系统,这个过程是为了将复杂的源程序代码装换为一种较为容易编译的表达形式。起到化难为易的作用。

代码优化过程:在该过程与上一阶段类似,在该过程将源程序的代码进行优化,使得繁琐的代码变得简单,这一阶段的目的主要是为了生产的目标代码变得高效,起化繁为简的作用。

目标代码生产:在该阶段为编译过程的最后阶段,在该阶段源程序将会转变为汇编语言或机器语言。

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

解释程序:不会生成目标代码,不区别翻译阶段和执行阶段。翻译源程序就直接执行,在程序执行期间一直有解释程序守候。

编译程序:会生成目标代码,不可直接执行(需要通过链接生成可执行文件后才可运行)。仅在编译过程中编译程序才会运行。

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

在之前的安卓的编译器都是采用边解释边执行”边解释边执行”的方式运行的,与方舟编译器相比效率底下,其原因还是在于解释方面,而方舟编译器全程执行机器码高效运行,不需要进行“解释”。而在这过程中,应用程序与操作系统都获得了极大的提升。

原文地址:https://www.cnblogs.com/renshenbenzuig/p/11458143.html