zoukankan      html  css  js  c++  java
  • 编译原理 一

    2019-09-04 11:19:07

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


    编译程序:把一种语言书写的程序翻译成汇编语言或机器语言那样的低级语言。

    翻译程序:把一种语言书写的程序翻译成与之等价的另一种语言的目标程序。

    汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。

    三者都是对语言的翻译过程,目的就是把程序翻译成计算机能够识别的语言。


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


    1.词法分析
    这个阶段的主要任务就是从左到右一个字符一个字符的读入源程序,对构成源程序
    的字符流进行扫描和分解,从而识别出一组紧密相连的zfu的集体含义。
    2.语法分析
    这个阶段的主要任务就是在词法分析的基础上将单词序列分解成各类语法短语。
    3.语义分析
    语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息。
    4.中间代码生成
    在进行了上述的语法分析和语义分析阶段之后,有的编译程序将源程序变成一种内部形式,
    这种内部形式表述形式就是中间代码。
    5.代码优化
    对中间代码进行变化和改造,使生成的目标代码更为高效。
    6.目标代码生成
    这个阶段的任务就是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或
    汇编指令代码。


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


    编译程序是先编译程序生成目标程序,再运行程序进行输入输出,解释程序省略生成目标程
    序的步骤。


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


    基本思想:采取了静态编译的方式,镶嵌于系统的底层,将所有的代码都提前编译成机器码,使程序直接在手机CPU上运
    行。同时利用多线程的原理,使程序一边运行边回收垃圾,程序运行不中断,垃圾回收不停,
    提高了cpu的运行效率
    技术路线:
    支持多语言联合优化的编译,在面对采用混合语言开发的安卓应用,方舟编译器可以在开发环
    境中编译成统一的流程,通过统一的程序表示和优化来执行,效率更高。
    对安卓软件生态的影响:
    华为方舟编译器采取了静态编译的方式,将现有的一边使用一边翻译的过程高效化,大幅度缩
    减设备读懂执行代码的过程,从而最终获得更加高效的编译语言速度,使得用户指令响应速度
    得以提升,手机运行应用APP自然也就更迅速不卡顿了!如果说华为方舟编译器的诞生仅仅是为
    了服务于华为自己,即便有着确实不错的体验效果,也不能称之为具有历史性意义的一步。在华
    为方舟编译器对外公布之时,华为就同时宣布将这一技术开源,并且热切希望有更多的应用程序
    厂商,安卓手机厂商,开源社区的开发者一同加入进来。也就是说华为方舟编译器的存在价值,
    绝不仅仅只是为了华为自己的前进。

  • 相关阅读:
    ping命令
    第一次手写Loadrunner测试脚本
    select into from和insert into select
    网络安全领域常说的payload
    如何查看LoadRunner日志
    验证码测试
    HTTP的请求和响应
    LoadRunner能录制微信登录过程么?
    切面编程AOP之KingAOP
    编程规范
  • 原文地址:https://www.cnblogs.com/huangwenshuo/p/11457926.html
Copyright © 2011-2022 走看看