1)简述编译程序与翻译程序、汇编程序的联系与区别。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
词法分析:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别。语法分析:在词法分析的基础上将单词序列分解成各类语法短句。语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息。中间代码生成:在语法分析和语义分析阶段的工作之后,有的编译程序将源程序变成一种内部表示形式。目标代码生成:把中间代码变换成特定机器上的绝对指令代码或者可重定位的指令代码或者汇编指令代码。
3)简述解释程序与编译程序的区别。
4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。
多语言联合:将同一应用中的不同语言代码联合编译、联合优化,消除语言间的性能“鸿沟”,降低开发者的优化成本。
轻量运行时,通过编译器的语言实现能力和优化能力增强,应用运行时的开销更小。
软硬件协同:编译器与芯片实现软硬件协同优化,充分发挥硬件能效,应用体验更佳。
多平台支持:支持面向多样化的终端设备平台进行编译和运行,根据设备特征提供便捷的开发与部署策略,提高开发效率。
当前的安卓系统使用Java作为编程语言,易于开发,但是不会将代码直接编译成机器语言,程序运行时有相当一部分代码还需要通过手机上的虚拟机临时同步编译,影响程序执行的效率。
华为方舟编译器采取了静态编译的方式,是首个取代了安卓虚拟机模式的静态编译器。
华为方舟编译器采用全程执行机器码高效运行程序,架构优化,性能提升。相较与此前流畅度,通过华为方舟编译器编译后的程序系统,操作流畅度提升24%,
系统响应速度提升44%,三方应用操作流畅度提升60%。有效解决安卓程序“边解释边执行”的低效率问题