1)
编译程序是将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。翻译程序是指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。
编译程序与汇编程序的区别:如果源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序称为汇编程序。
2)
主要阶段:词法分析、语法分析、语义分析、中间代码生成、目标代码生成。
主要功能:
词法分析:这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个个单词。
语法分析:语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确。
语义分析:语义分析的一个工作时进行类型审查,审查每个算符是否具有语言规范允许的运算对象,当不符合语言规范时,编译程序应报告错误。
中间代码生成:中间代码生成是产生中间代码的过程。
目标代码生成:这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
3)
解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;
编译程序(编译器)则是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。
两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,而在解释方式下,解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立的目标程序。
4)
当前方舟编译器支持Java/Kotlin程序字节码的前端输入,其它编程语言的支持(如C/C++/JS等)还在规划中,方舟编译器的中间表示(IR)转换器将前端输入转换成方舟IR,并输送给后端的优化器,最终生成二进制文件,二进制文件与编译器运行时库文件链接生成可执行文件,在方舟的运行环境中就可执行该文件。
方舟编译器直接编译出机器指令无需繁琐的虚拟机运行、提供更高效的内存回收机制、应用级编译优化简单应用,开放开源超级文件系统,读取更顺畅,安全又高效,HiAi生态开放共享,更多智能体验。
当前大部分安卓应用都涉及不同开发语言,不同语言形成的代码需要在运行态中进行协同从而产生额外消耗。而方舟编译器是业界首个多语言联合优化的编译器,开发者在开发环境中可以一次性将多语言统一编译为一套机器码,运行时无需产生跨语言带来的额外消耗,并可以进行跨语言的联合优化,提升运行效率。安卓自身的编译技术在不断的发展,但始终需要在运行中依赖虚拟机来进行动态编译和解释执行,对系统资源消耗较大。而方舟编译器在开发环境中就可以完成全部代码的编译,手机安装应用程序后无需依赖虚拟机资源,即可全速运行程序,带来效率上的极大提升。举一个例子:EMUI 9.1仅仅对系统组件System Server应用了华为方舟编译器后,就带来了系统操作流畅度提升24%,系统响应性能提升44%的收益