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

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

    (1)一个编译程序就是一个翻译程序。把一种语言(源语言)书写的程序翻译成另一种语言(目标语言)的等价程序。编译程序专指由高级语言转换为低级语言,编译过程划分词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成6个阶段。翻译程序是把一个高级语言程序翻译成某个机器的汇编语言程序来执行并生成结果,然后获取下一个语句。编译程序会生成目标代码,而翻译程序不生成目标代码。直接输出结果。汇编程序指汇编语言程序,需要通过汇编程序汇编后才能运行。而汇编程序与目标代码相连,防止出现语法错误的问题。

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

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

    ①词法分析是从左到右的一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解。

    ②语法分析是在词法分析的基础上将单词序列分解成各类语法词语。

    ③语义分析是审查源程序有无语义错误,为代码生产阶段收集类型信息。

    ④中间代码生成是有的编译程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。

    ⑤代码优化是对前一段产生的中间代码进行变换或进行改造,是为了生产的目标代码更加高效。

    ⑥目标代码生成是把中间代码变换成待定机器上的绝对指令代码或可重定位的指令代码或编汇指令代码。

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

    解释程序是把一个高级语言程序翻译成某个机器的汇编语言程序。而编译程序是一个翻译程序。解释程序的输入包括源程序和源程序的初始数据,它不生成目标代码,直接输出结果。当程序的运行速度非常重要时,是不能采用解释方式的。

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

    方舟编译器支持Java/Kotlin程序字节码的前端输入。方舟编译器IR是支持程序编译和运行的中间程序表示。程序源代码中的任何信息对于程序分析和优化都会有所好处。方舟编译器的基本思想是全程执行机器码高效运行程序,可供开发者在开发环境一次性的将高级语言编译为机器码。方舟编译器采取了的技术路线是静态编译的方式,是首个取代了安卓虚拟机模式的静态编译器。它对安卓的软件生态影响是会淘汰安卓不能将代码直接编译成机器语言的技术,然后促进安卓技术的发展,让安卓的生态更加丰富和稳定。

  • 相关阅读:
    Django之Form、CSRF、cookie和session
    Django之路由、模板和模型系统
    简约而不简单的Django
    剑指offer(10)矩形覆盖
    剑指offer(9)变态跳台阶
    剑指offer(8)跳台阶
    剑指offer(7)斐波那契数列
    剑指offer(6)旋转数组中的最小数字
    剑指offer(5)用两个栈实现队列
    剑指offer(4)重建二叉树
  • 原文地址:https://www.cnblogs.com/q1uj1e/p/11458020.html
Copyright © 2011-2022 走看看