方舟编译器可以干什么?

实在睡不着,瞎鸡儿写写。

程序员写的东西,叫做源程序,假设为test.C,里面有各种C语句、调用其他源文件的方法的语句、调用库函数的语句、调用系统API的语句以及各种正经的不正经的注释及一些标记。

编译器第一步需要将Car语句按照标记、设置翻译成二进制的机器代码,纯01,此时有了test.obj。

第二步,将OBJ文件与各种调用的其他文件进行连接,生成可执行的二进制01文件。

GCC或者tc尔后link的操作。

后来的编译器就不需要你再手动连接了,直接生成目标代码。再后来还有了动态链接技术,即一些库函数或者系统API不放在你的可执行文件里,而是在运行时直接调用系统的二进制文件。

直观的说,编译器就是一个翻译,你把你写的文章给他,他负责给你翻译成英文然后发行。

android下的java与此大差不差,区别在于,目标代码或者说生成的结果不是二进制的机器码,而是java虚拟机的字节码。

但编译器仍然是一个翻译,把你写的文章翻译成对应国家的语言的文章。

好了,背景知识就是这样吧。现在我们来看看华为这个方舟编译器能干啥:

1、在现有状况下,可以针对海思CPU进行优化。海思CPU是ARM的一个实现,这个实现除了ARM要求的属性之外,理所当然还有一些私有属性不被支持和优化,那么方舟编译器就可以有针对性的对字节码进行优化,从而在硬件投资固定的情况下,提高产品的性能。

2、当华为市占率够高时,可能选择使用方舟进行编译的APP会增多,对吧,我甚至可以嵌入到android studio里作为编译的一个可选插件,方便使用,打个勾的问题。

3、当使用方舟编译的APP足够多的时候,华为可以选择翻译到android下的java虚拟机上,也可以选择翻译到其他java虚拟机上,甚至可以选择直接翻译成机器码,甚至可以选择翻译到其他玄武啊之类的操作系统上,程序员不需要过多介入,用户也不需要过度感知,无感切换操作系统。(当然,调用系统API语句及API的兼容等等大量工程上的细节还是少不了的)

说到底,编译器本身是一个从程序员到机器的翻译,它能提供无感切换操作系统,从而,它可以为华为切换操作系统提供渐进的可能性。

站务

全部专栏