涨姿势!x86处理器兼容ARM架构App的秘密

来源:互联网 发布:关于网络的手抄报图片 编辑:程序博客网 时间:2024/05/01 04:14

http://bbs.gfan.com/android-7431343-1-1.html


        相对于ARM来说,Intel进入手机和平板市场的时间要晚一点。很多人也对采用Intel Atom处理器的平板电脑持怀疑态度,担心其无法执行针对ARM优化的应用程序。实际ARM本身也存在兼容性问题,只是大家一直都没注意。
inteldroid.jpg
        因为ARM采用授权方式,因此各家处理器集成的GPU并不相同。例如高通使用自家的Adreno、Nvidia使用GeForce ULP、三星使用ARM的Mali或PowerVR的SGX,由于GPU的规格不同(如封装格式),导致App在不同处理器中的表现差异很大。所以Intel开发了Binary Translation,用来兼容针对ARM优化的应用程序。
        想了解Binary Translation的原理,首先要了解Android程序是如何运行的。最初Android程序都采用Eclipse开发环境和Android SDK,代码用Java语言写成,经过封装转换成Bytecode后加入到Android设备中,在Dalvik虚拟机中运行。
        不过稍微了解程序运行的人都知道,虚拟机虽然能够带来跨平台、不限硬件规格的好处,但同时也会因为代码转换降低执行效率。因此后来Android除了SDK(Software Development Kit)以外,又推出了NDK(Native Development Kit),让开发人员能够避免Dalvik转译造成的性能损失,还可以使用Java之外的程序语言编写(如C/C++)。
28bc2d8c1d0ed601985f4703aa198082.png
        由于经过NDK编译之后的程序是硬件能够直接执行的机器代码,所以执行效率比较高,但同时带来了兼容性问题——编译给ARM处理器的机器代码和给x86处理器的不一样,于是便有了Binary Translation这个中间转译层,可以转换那些使用ARM NDK的应用程序,让它们能够在Intel Atom处理器上正确执行。
people_fonepad.png
people_fonepad.png
        Intel估计约90%专为ARM编写的程序都能够在Atom上执行,也就是说整个Google Play里面只剩下少部分程序不能使用。目前很多平板电脑(如华硕ME372CG)都采用了Intel Atom处理器,运行Java程序问题不大,消费者可以放心购买。

0 0