作业1 了解编译原理

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

  编译程序::把高级语言程序翻译成低级语言程序(机器语言、汇编语言等等)的软件,是较为复杂的翻译程序,如Java,C、C++等等。

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

  汇编程序:是一种语言翻译程序,它把汇编语言源程序翻译成可重定位的机器语言程序。

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

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

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

  1.词法分析:把源程序从左到右逐个字符读入,然后扫描源程序字符流,识别出有词法意义的单词。

  2.语法分析:在词法分析的基础上将单词序列分解成各类语法短语,如“程序”、“语句”、“表达式”等。

  3.语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息。如进行类型审查,审查每个算符是否具有语言规范允许的运算对象,当不符合语言规范时,编译程序应报告错误。

  4.中间代码生成与优化:根据语义规则产生一种介于源语言与目标代码之间的一种中间代码,并把中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间。

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

  6.目标代码优化:对前一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间

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

  解释程序:接受某高级语言的一个语言输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句。没有区分编译与执行,执行程序时不产生中间代码,直接给出运行结果,如虚拟机,但是速度慢。

  编译程序:指将高级语言转换为低级语言。源程序经过编译程序之后生成目标程序,再得到执行结果。

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

  基本思想:方舟编译器则是在开发的时候就已经完成了静态编译,不需要依赖手机本身编译。同时,方舟编译器还提供了更高效的内存回收机制。由于不需要经过虚拟机,应用在运行过程中不需要暂停,同时随时回收内存,而不是将垃圾堆在一起回收。方舟编译器对代码进行优化,为程序带来更高的性能。并且其学习和使用成本低。

  采用的技术路线:支持多语言联合优化的编译,在面对采用混合语言开发的安卓应用,方舟编译器可以在开发环境中编译成统一的流程,通过统一的程序表示和优化来执行,效率更高。

  对安卓生态的影响:华为方舟编译器成为了安卓生态圈中企业的领头羊,在新技术的开发方面已经远远超过了国内外其他电子科技企业。华为方舟编译器的开源,将凭其一己之力带动整个安卓生态圈的发展,为企业之间的竞争、人才的发展、安卓生态的成长起推波助澜的作用。无论是手机厂商,还是应用开发者都可以使用方舟编译器来优化应用的性能。安卓生态圈被华为方舟编译器打破了原有的禁锢,突破手机机能限制,根据不同的应用采用不同的编译和优化算法, 提高了应用执行效率,为广大的用户提供更加愉快的体验。

  参考资料:https://blog.csdn.net/patrick_star_cowboy/article/details/82453785

       https://www.cnblogs.com/zdcaolei/archive/2012/04/04/2432094.html

原文地址:https://www.cnblogs.com/hs01/p/11457978.html