1)简述编译程序与翻译程序、汇编程序的联系与区别。
答:编译程序是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。
汇编程序是指把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
答:编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成6个阶段。
词法分析:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词;
语法分析:在词法分析的基础上将单词序列分解成各类语法短语,语法分析确定整个输入串是否构成一个语法上正确的程序;
语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息;
中间代码生成:将源程序变成一种内部表示形式;
代码优选:对中间代码进行变换或改造,使生成的目标代码更为高效、省时间和省空间;
目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
3)简述解释程序与编译程序的区别。
答:解释程序直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码。
编译程序是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。
编译程序生成目标代码而解释程序不生成;编译程序产生的目标代码的执行速度比解释程序的执行速度要快;解释程序人机交互好,适用于初学者。
4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解它的基本思想与采用的技术路线,谈谈它对安卓软件生态会有什么影响。
答:官方介绍称,方舟编译器是基于GCC开发的交叉编译器套件,它包括了C、C++、Fortran的前端,也包括了这些语言的库(如libstdc++、libgcc等)。HCC运行在X86 linux架构服务器上,生成的二进制运行在Aarch64架构服务器上。方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件。
华为方舟编译器还在持续演进中,陆续将上述能力实现和开源。华为方舟编译器可以将高级语言(Java)直接变成机器码,无需再通过 Android 操作系统中内置的 VM 编译器。华为方舟编译器目前只是笼统的介绍改变了安卓“边解释边执行”造成的低效率,是如何全程执行机器码的并没有说明。即便如此,也已经向我们传递了这款编译器带来的巨大改变,那就是让操作系统流畅度提升24%、响应速度提升44%、三方流畅度可提升60%。
浙公网安备 33010602011771号