编译原理的学习 No.1
一、简述编译程序与翻译程序、汇编程序的联系与区别。
编译程序为将高级语言书写的程序翻译成用低级语言书写的目标程序的等价程序。是为高级服务。
翻译程序为读一句源程序就翻译一句、执行一句,但不产生目标代码。
汇编程序为将汇编语言书写的程序翻译成机器指令书写的程序。为低级服务。
二、编译过程包括哪几个主要阶段及每个阶段的主要功能。
编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。
词法分析是从左到右将每个字符读入源程序并将字符流进行扫描分解,识别单词。
语法分析是在词法分析的基础上将单词序列分解成各类语法短语。
语义分析是审查源程序有无语法错误。
中间代码生成是一种含义明确的记号系统。是编译程序将源程序变成一种内部表示形式。
代码优化是将前一阶段生成的中间代码进行变换或进行改造,使其变得高效。
目标代码是将中间代码变成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
三、简述解释程序与编译程序的区别。
区别在于编译程序会产生目标代码,而解释程序不会产生。
四、了解新开源的华为方舟编译器,理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。
方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,是将在JAVA/Kotlin程序前端的输入转换成方舟
IR并输送到后端的优化器中,生成二进制文件。如下图:
摘自https://www.openarkcompiler.cn/document/frameworkDesgin
这方舟编译器将会把安卓系统存在的“越用越卡”的问题去除,给使用安卓系统的设备带来更久使用寿命。