第一次作业——了解编译原理1

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

  编译程序——序是先完整编译后运行的程序;解释程序是一句一句翻译且边翻译边执行的程序。

源程序通过C编译器生成汇编源程序,再通过汇编程序生成目标程序,最后通过链接程序生成可执行程序。

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

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

 

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

  编译过程一般分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个主要阶段。各个阶段的主要功能如下:

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

语法分析——在词法分析的基础上将单词序列分解成各类语法短句。

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

中间代码生成——在语法分析和语义分析阶段的工作之后,有的编译程序将源程序变成一种内部表示形式。

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

 

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

编译程序能生成目标程序,而解释程序不能。编译程序是整体编译完了,再一次性执行。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。

解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言。

 

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

方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件。 方舟编译器还在持续演进中,陆续将上述能力实现和开源。

硬件发展趋势——智能时代,万物互联,终端设备复杂多样,逐步形成以手机为中心,多设备互联互通的发展趋势。

软件生态发展诉求——终端设备多种多样,应用场景层出不穷,编程语言、运行环境多样化,不同编程语言之间的互通效率持续影响应用性能,不同设备平台的差异对开发者带来不便。

方舟编译器带来的解决方案——通过多语言统一IR表示,可实现应用中多种编程语言联合编译优化提升性能;在支持多平台的同时,根据设备特征提供便捷的开发与部署策略提升效率。

基本思想:应用安装速度飞快,初次使用应用的时候没有机器码,因此只能解释执行设备空闲的时候,系统拿出应用运行时候保存的代码直接把这些代码编译为机器码。方舟编译器对代码进行优化,为程序带来更高的性能。

技术路线:支持多语言联合优化的编译,通过统一的程序表示和优化来执行,效率更高。程序运行时有相当一部分代码还需要通过手机上的虚拟机临时同步编译,影响程序执行的效率。华为方舟编译器采取了静态编译的方式,是首个取代了安卓虚拟机模式的静态编译器。

影响:在之前我们所用在安卓操作系统,用久了就很卡,而且用久后内存变少的速度会越来越快,用久后运行起来速度会越来越,现在方舟在出现解决安卓存在的困境,速度越来越快, 提高了应用执行效率,方舟在出现对IOS系统也有持平效果,华为更加迈向先进一步,是使用户有更好的体验。

猜你喜欢

转载自www.cnblogs.com/pangminhua/p/11468890.html