了解编译原理
1)简述编译程序与翻译程序、汇编程序的联系与区别。
答:编译的过程就是将源代码文件以字符流的形式进行处理,进行词法和语法的分析,然后通过汇编器将源代码指令转变成汇编指令它把高级语言源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果;翻译程序是指由高级语言程序翻译成机器语言程序;汇编程序是把汇编语言程序翻译成机器语言程序。编译程序通过翻译程序进行编译成计算机可以识别在代码,通过汇编程序翻译成机器语言程序。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
答:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。
词义分析主要功能:对构成源程序在字符流进行扫描肯分解,可以识别出一个个字符。
语法分析主要功能:在词法分析在基础上将单词序列分解成各类语法短语。
语义分析主要功能:审查源程序是否有语义错误,为代码生成阶段收集类型信息。
中间代码生成主要功能:生成一些结构简单和含义明确在记号系统。
代码优化主要功能:对中间代码进行变换在改造,使生成的代码更为高效。
目标代码生成主要功能:把中间代码变成特定机器上的绝对指令代码或可重定位在汇编指令
代码。
3)简述解释程序与编译程序的区别。
解释程序:简单理解就是输入一句代码,不用通过目标程序,直接输出结果。例如python。
编译程序:把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。编译程序工作时,先分析,后综合,从而得到目标程序。比如C语言编译后.cpp文件变成.exe。
3)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。
基本思想:应用安装的时候不执行 AOT 编译,安装速度飞快。初次使用应用的时候没有机器码,因此只能解释执行设备空闲的时候,系统拿出应用运行时候保存的代码直接把这些代码编译为机器码 (AOT)。
技术路线:程序运行时有相当一部分代码还需要通过手机上的虚拟机临时同步编译,影响程序执行的效率。华为方舟编译器采取了静态编译的方式,是首个取代了安卓虚拟机模式的静态编译器。
影响:在之前我们所用在安卓操作系统,每个用户使用都会有一个感想,用久了就很卡,运行起来速度超级慢,现在方舟在出现解决安卓存在的困境,速度越来越快,解决了边解释边运行。方舟在出现对IOS系统也有持平效果,华为更加迈向先进一步。