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