第一次做业-编译原理概述

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

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

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

编译程序是将高级语言的程序转成机器语言;翻译是把程序要实现的功能进行阐述spa

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

 

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

编译程序的工做过程通常也能够划分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。xml

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

语法分析的任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各种语法单位(语法范畴),如“短语”、“句子”、“程序段”和“程序”等。经过语法分析,肯定整个输入串是否构成语法上正确的“程序”。字符串

语义分析与中间代码产生这一阶段的任务是:对语法分析所识别出的各种语法范畴,分析其含义,并进行初步翻译(产生中间代码)。编译器

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

目标代码生成的任务是:把中间代码(或经优化处理以后)变换成特定机器上的低级语言代码。

 

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

在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都再也不参与目标程序的执行过程,而在解释方式下,解释程序和源程序(或某种等价表示)要参与到程序的运行过程当中,运行程序的控制权在解释程序。

 

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

如今的 Android 是 解释执行 + 还算能够的JIT + AOT 的模式。在方舟编译器里面,已经编译好的APK,会经过静态编译的方式先转换成机器码再安装,这实际上是AOT,无需麻烦的虚拟机,提高运行速度和效率。而且做为开发者,还能够根据不一样的程序特色,选择不一样的编译优化方案,不像安卓官方的方式使用统一的虚拟机方案。华为方舟编译器则是利用程序多线程运行的特色。方舟编译器是AOT、中间层、JIT三种模式进行编译,可以大幅度提升安卓软件的安装、运行速度。

相关文章
相关标签/搜索