了解编译原理
1)简述编译程序与翻译程序、汇编程序的联系与区别。
从功能上看:
翻译程序是把一种语言(称为源语言)书写的程序翻译成另一种语言(称为目标语言)的等价程序。
编译程序是把高级语言所写的源程序翻译成意思相同的(等价的)机器语言或汇编语言的目标程序。
汇编程序是把汇编语言源程序翻译成机器语言程序。
相同之处:
编译程序与翻译程序、汇编程序均为语言编译程序,三者本义上都是实现不同语言之间的转换。
不同之处:
三者所转换的语言种类不同,翻译程序:源语言->目标语言;编译程序:高级语言->机器语言或汇编语言;汇编程序:汇编语言->机器语言。
三者所转换的语言范围不同;翻译程序所转换的范围更大,其次是编译程序,最后是汇编程序。
联系:
编译程序与翻译程序、汇编程序均为语言编译程序;
源程序(可能经过翻译程序处理的)-> 编译程序 -> 目标汇编语言程序 -> 汇编程序 ->可在装配的机器代码。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
编译过程包括词法分析、语法分析、词义分析与中间代码产生、代码优化、目标代码生成五大步骤。
词法分析:识别出句子中的一个个单词;输入源程序,对源程序的字符串进行扫描和分解,识别出一个个的单词。
语法分析:分析句子的语法结构;在词法分析的基础上把单词符号串分解成各类语法单位,可表示为语法树。
词义分析与中间代码产生:根据句子的含义进行初步翻译;对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译。
代码优化:对译文进行修饰;在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效的代码。
目标代码生成:写出最后的译文;把经过化处理之后的中间代码转换成特定机器上的低级语言代码。
3)简述解释程序与编译程序的区别。
编译程序是先编译后执行,其与执行步骤是分开的。表现危险整体编译,在整体执行。
解释程序是一边解释源代码,一边执行机器语言。 解释一句源代码后就提交计算机执行一句语言,并不形成目标程序。如同声翻译,不产生中间值。
4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。
华为方舟编译器的基本思想为让开发者在开发环境中一次性把各种语言统一“翻译”;使用时,在运行之前已经把所有语言”解释“好了,直接运行已经“翻译”好的应用;做到先翻译后执行,以提高效率。
华为方舟编译器提供了全新的系统及应用的编译和运行机制,从动态编译变为静态编译,就是直接将高级语言直接编译成机器码,彻底消除了虚拟机动态编译的额外开销,实现了开发和运行效率的兼容并举。
华为方舟编译器对安卓软件生态会造成巨大的影响,安卓系统间会提高其运行效率,这将会对中国的网络市场提出挑战,会促进中国的网络进行再次提速;会减小中国对国外科技的依赖,增加中国的软实力,让中国发展更快速。也让中国智能科技发展更快;同时也会促进各企业和职业人员的发展,给开发者进行代码优化提供了一个更广阔的舞台。