zoukankan      html  css  js  c++  java
  • 01 编译原理概述

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

       翻译程序是把一种语言(称作源语言)书写的程序翻译成另一种语言的(称作目标语言)的等价程序。将一种高级语言翻译成低级语言时,则这种翻译程序称作编译程序。编译程序的基本任务是将源语言翻译成等价的目标语言程序。

       汇编过程是指吧汇编语言翻译成目标机器指令的过程。

       翻译程序是编译程序的一种,翻译程序将高级语言翻译成低级语言,汇编程序将汇编代码转换成目标代码。

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

       编译过程主要包括以下几个阶段:

       词法分析:词法分析是编译的第一个阶段,这个阶段的主要任务是对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(逻辑上紧密相连的一组字符,这些字符具有集体含义)。

          ↓

       语法分析:语法分析是编译程序的第二个阶段,主要任务是在词法分析的基础上将单词序列分解成各类语法短语。这种语法短语也称为语法单位可表示语法树。语法分析所依据的是语法规则,即描述程序结构的规则,词法分析和语法             分析本质上都是对源程序的结构进行分析。

          ↓     

       语义分析:语义分析是审查源程序有无语义错误,伪代码生成阶段收集类型信息,审查每个算符是否具有语言规范允许的运算对象。

          ↓

       中间代码生成:进行上述语法、语义分析的阶段工作之后,有的编译程序将源程序变成一种内部表示形式,这种形式称为中间语言或中间代码。中间代码是一种结构简单,含义明确的记号系统,这种记号系统可以设计为多种多样的形                 式,主要特点是容易生成和容易将它翻译成目标代码。

           ↓

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

           ↓

       目标代码优化:这一阶段的任务是把总监代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。

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

        编译程序:一种语言处理程序,将高级源语言(如FORTRAN、Pascal、C)转换成低级语言(如汇编语言或机器语言)的翻译程序被称作编译程序。需要将整个源程序翻译为目标代码后才可以运行程序并生成结果。编译的工作效率                高,即时间快、空间省;交互性与动态特性差、可移植性差.

        翻译程序:也是一种语言处理程序,接受某个语言的程序并立即运行这个源程序。它的工作模式是一个个的获取、分析并执行源程序的语句,一旦第一个语句分析结束,源程序便开始运行并生成结果。可以在下一个语句之前了解每个             语句的执行结果,允许执行时修改程序。它输入后不生成目标代码,直接输出结果。工作效率低,即时间慢、空间费;交互性与动态特性好、可移植性好。

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

          华为方舟编译器,由华为公司研发,支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程的开发平台,包含编译器、工具链、运行时等关键部件。华为的方舟编译器的原理是替代传统的语言虚拟机的静态编译方式,方舟能够直接将高级编程语言编写的命令语句直接转换成计算机读取以及运行起来速度更快的机器码,代替了解释器,减少了编译的过程所占据的资源,提升了系统整体的运行效率。

         本次方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现Java程序到aarch64汇编指令的编译过程。开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对Java程序进行编译。社区参与者可以通过框架源码学习方舟编译器的编译器中间表达(IR)及基本的中端编译框架,熟悉方舟编译器的架构思想,并参与诸如对编译器中端优化的贡献。

  • 相关阅读:
    吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型
    吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型
    吴裕雄 python 机器学习——半监督学习LabelSpreading模型
    吴裕雄 python 机器学习——半监督学习标准迭代式标记传播算法LabelPropagation模型
    吴裕雄 python 机器学习——人工神经网络感知机学习算法的应用
    【2017"百度之星"程序设计大赛
    【Uva 1289】Stacking Plates
    【Uva 12093】Protecting Zonk
    【Uva 1633】Dyslexic Gollum
    【2017 Multi-University Training Contest
  • 原文地址:https://www.cnblogs.com/HvYan/p/11452083.html
Copyright © 2011-2022 走看看