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

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

      编译就是将源代码文件以字符流的形式进行处理,进行词法和语法的分析,然后通过汇编器将源代码指令转变成汇编指令。

      汇编实际上指把汇编语言代码翻译成目标机器指令。

      翻译是指将一种语言等价转换成另外一种语言,继续传达同样的意思或者功能。

      三者之间都改变了原本代码,但是区别程序的不同也代表着改变的形式不同,编译程序将源代码转变成汇编指令,汇编程序则将编译程序转发成的汇编指令转化成目标机器指令,而编译程序跟汇编程序都属于翻译程序。

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

      编译过程包括以下六个程序:

      1.词法分析:读入程序,扫描、分解和识别构成源程序的字符流和单词;

      2.语法分析:在词法分析的基础上将单词序列分解成各类语法短语;

      3.语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息;

      4.中间代码生成:通过编译程序将源程序变成中间语言或中间代码;

      5.代码优化:将中间代码进行变换或改造,生成更高效的代码;

      6.目标代码生成:把中间代码变换成特定机器上的汇编指令代码。

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

      编译指将高级语言转化成低级语言,工作效率高,即时间快、空间省;交互性与动态特性差、可移植性差。

      解释指接受高级语言的一句输出,并解释、执行跟得到结果之后再接受下一句,工作效率低,即时间慢、空间费;交互性与动态特性好、可移植性好。

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

      现在的 Android 是 解释执行 + 还算可以的JIT + AOT 的模式。在方舟编译器里面,已经编译好的APK,会通过静态编译的方式先转换成机器码再安装,这其实是AOT,无需麻烦的虚拟机,提升运行速度和效率。并且作为开发者,还可以根据不同的程序特点,选择不同的编译优化方案,不像安卓官方的方式使用统一的虚拟机方案。华为方舟编译器则是利用程序多线程运行的特点。方舟编译器是AOT、中间层、JIT三种模式进行编译,能够大幅度提高安卓软件的安装、运行速度。

  • 相关阅读:
    python基础1.0
    时间紧的跟狗一样,不动摇坚持下去!
    STM32(十三)- SDIO_SD读写测试
    STM32(十二)- TIM基本定时器和高级定时器
    STM32(十一)- 串行FLASH文件系统FatFs
    STM32(十)- SPI
    STM32(九)- I2C
    STM32(八)- DMA和常用存储器
    STM32(七)- UART
    STM32(六)- SysTick
  • 原文地址:https://www.cnblogs.com/dengweijiang/p/11452086.html
Copyright © 2011-2022 走看看