level 10
废土嗷嗷怪⚡
楼主
我们先说5.0之前,安卓2.x和安卓4.x的这个时代。众所周知,安卓应用绝大多数走的是java的运行环境,也就是运行在java的虚拟机上的。
而java虚拟机(jvm)只是软件和物理硬件的一个媒介。软件对jvm操作,而jvm对底层硬件操作。也就是说对于不同的硬件只需要不同的jvm就可以了,而不同的jvm对于app来说开放的接口是一致的,这也是安卓应用兼容不同硬件的原因。
那么问题来了,按照如上的说法,对于x86设备,系统只需要提供一个面向x86的的jvm就可以了,那么关arm什么事呢?为什么要有arm指令翻译机这种存在?难道说我们现在用的x86安卓里边的jvm还是面向arm的,然后再把jvm面向底层硬件的arm指令转换成x86指令——这样的双重指令转换么?
2015年07月17日 15点07分
1
而java虚拟机(jvm)只是软件和物理硬件的一个媒介。软件对jvm操作,而jvm对底层硬件操作。也就是说对于不同的硬件只需要不同的jvm就可以了,而不同的jvm对于app来说开放的接口是一致的,这也是安卓应用兼容不同硬件的原因。
那么问题来了,按照如上的说法,对于x86设备,系统只需要提供一个面向x86的的jvm就可以了,那么关arm什么事呢?为什么要有arm指令翻译机这种存在?难道说我们现在用的x86安卓里边的jvm还是面向arm的,然后再把jvm面向底层硬件的arm指令转换成x86指令——这样的双重指令转换么?