博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

作业1 编译原理概述

Posted on 2019-09-03 11:22  马淳丰  阅读(331)  评论(1编辑  收藏  举报

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

翻译程序是一种系统程序,它将计算机编程语言编写的程序翻译成另外一种计算机语言的一般来说等价的程序,主要包括编译程序和解释程序,汇编程序也被认为是翻译程序。

编译程序(Compiler,compiling program)也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。

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

汇编程序(为低级服务)是将汇编语言书写的源程序翻译成由机器指令和其他信息组成的目标程序。编译程序(为高级服务)是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。

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

编译过程包括词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成5 个阶段。

词法分析的功能是对输入的高级语言源程序进行词法分析,识别其中的单词符号,确定它们的种类,交给语法分析器,即把字符串形式的源程序分解为单词符号串形式。

语法分析的功能是在词法分析结果的基础上,运用语言的语法规则,对程序进行语法分析,识别构成程序的各类语法范畴及它们之间的层次关系,并把这种层次关系表达成语法树的形式。

词义分析和中间代码生成的功能是在语法分析的基础上,对程序进行语义分析,“理解”其含义,产生出表达程序语义的内部表达形式(中间代码)。

优化的功能是按照等价变换的原则,对语义分析器产生的中间代码序列进行等价变换,删除其中多余的操作,对耗时耗空间的代码进行优化,以期最后得到高效的可执行代码。

目标代码生成的功能是把优化后的中间代码变换成机器指令代码,得到可在目标机器上执行的机器语言程序。

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

翻译程序有两种,一种是编译程序,一种是解释程序。

1.编译程序

编译程序是将高级语言程序(如pascal ,fortran,c等)源代码作为输入,直接进行翻译生成出机器语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果。

编译程序工作时,先分析,后综合,从而得到目标程序。分析指的是词法分析和语法分析,综合指的是代码的优化,存储的分配和代码的生成。为了完成分析综合任务,编译程序对源程序进行一次甚至多次的扫描,每次扫描完成一项或多项任务,也有可能一项任务被分成多次扫描才能完成。另外,大多数扫描直接生成机器语言的目标代码,但是有的也生成汇编语言的目标代码,进而在转化为机器语言的目标代码。

2.解释程序

同样将源代码(如basic语言)的程序作为输入,解释一句就提交计算机执行一次,并不形成目标文件,就想口语交际的中翻译,说出一句翻译一句,或者是终端的dos窗口,在终端输入一条命令语句,解释程序立刻返回给终端若干句。

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

        当前的安卓系统使用Java作为编程语言,易于开发,但是不会将代码直接编译成机器语言,程序运行时有相当一部分代码还需要通过手机上的虚拟机临时同步编译,影响程序执行的效率。华为方舟编译器采取了静态编译的方式,是首个取代了安卓虚拟机模式的静态编译器。方舟编译器可供开发者在开发环境一次性的将高级语言编译为机器码,手机安装应用程序后可全速运行程序,带来效率上的极大提升。

  余承东在发布会现场说,“华为方舟编译器是一项革命性的突破”。方舟编译器所起的“革命性”作用,就是让手机应用的响应速度、流畅度大幅度提升,给用户带来更好的使用体验。方舟编译器的出现有着非常重大的意义。

  1.为Android注入新活力:Android的诞生和维护主要归功于谷歌,虽然随着版本的迭代一直在进步但是多年来始终没有打破固有框架也因此无法再进一步,方舟编译器的出现显然为Android提供了另一种可能,华为已经从几年前的使用者变成了重要贡献者。

  2.更好的用户体验:Android的生态需要谷歌、手机厂家、App开发商共同维护才能给消费者更好的体验,这点在国内尤其突出,绿色联盟和统一推送联盟在着手治理App生态乱象,方舟编译器则是从系统框架层面提供了更深一层的优化。

  中国的IT行业发展的很好,但是在基础领域缺少突破,中国的IT业需要唐吉可德,需要为探索者鼓掌,当然面包也很重要,方舟编译器我认为干的不错。