导航

编译原理概述

Posted on 2019-09-03 11:25  靓仔lay  阅读(203)  评论(0)    收藏  举报

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

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

编译程序是将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。

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

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

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

主要阶段:词法分析、语法分析、语义分析、中间代码生成、目标代码生成

主要功能:

  词法分析:这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词

  语法分析:语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确

  语义分析:对结构上正确的源程序进行上下文有关性质的审查,进行类型审查

  中间代码生成:中间代码生成是产生中间代码的过程

  目标代码生成:把语法分析后或优化后的中间代码变换成目标代码

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

解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;

编译程序(编译器)则是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,而在解释方式下,解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。

解释器翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立的目标程序。

 

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

  编译器是连接人类世界与机器世界之间的一座桥梁,任何在手机上的程序都需要经历软件开发的过程,软件开发使用的语言是易于程序员理解的高级语言,程序在手机上运行需要转换成可以高效执行的机器码,这样的转换过程就是由编译器完成的。可以说编译器是用来生成软件的软件,是连接软件与芯片的桥梁,其性能,效率直接影响到最基础的消费者体验。

  方舟编译器可供开发者在开发环境一次性的将高级语言编译为机器码,手机安装应用程序后可全速运行程序,带来效率上的极大提升。根据华为实验室的测试数据,EMUI 9.1在仅仅对系统组件System Server应用了华为方舟编译器后,就带来了系统操作流畅度提升24%,系统响应性能提升44%,三方应用操作流畅度提升60%。华为的方舟编译器无疑是对人类文明的进步又做出一大贡献。

  目前已经有40多个顶级应用通过方舟的编译上架到华为应用商城,并且欢迎未来有更多的第三方使用方舟编译器。同时,方舟编译器所有代码也将开源给业界。