关于houdini技术和android x86平台兼容性的问题
2014-05-30 17:52
4399 查看
houdini技术 是intel 研发的ARM binary translator,用于解决当前android部分native应用库兼容跑在x86架构上的技术,它的原理在于把ARM的二进制代码转译为X86指令集,使得可以在X86的CPU上执行。
Intel是移动市场的新进者,最近出了几款面向移动市场的SOC,面对应用程序支持缺乏的问题,有两条路可以走:
1.逐家拜访应用开发商,要求他们重新为intel的cpu编译一份应用。
2.使用二进制转换,使得已有的应用可以运行在intel的cpu上。
该产品并不开源,可以在联想的K900 ROM里面可以找到二进制版本。一共有三个文件:libhoudini.so libdvm_houdini.so houdini_armlibs.tgz
原理是:当Dalvik VM加载lib失败时,程序流会再次尝试用libhoudini中的my_dlopen打开。该lib类似于QEMU的user mode emulator,通过虚拟一个ARM的CPU (包含指令集和寄存器,但是没有外设模拟),加载基于ARM指令集的lib。目前还不清楚是基于解析执行,还是JIT方式实现。
采用类似技术的产品有valgrind(模拟X86 CPU来检测程序内存泄露),qemu user mode(可以在X86 linux下执行mips的elf文件)
类似概念的产品
为ARM服务器产品准备的二进制翻译软件 (X86转ARM指令集) http://server.chinabyte.com/345/12451845.shtml
FX!32 (X86 windows程序运行在Alpha CPU的Windows NT上) http://en.wikipedia.org/wiki/FX!32 至于X86上的Android兼容,Dalvik 做java解释执行,对于高性能应用使用native C原生代码,只针对硬件平台编译,x86、ARM或MIPS都有相应的二进制文件,Intel推出atom平台支出,就引入了“二进制转换”(Binary Translation)功能,来解决x86无法运行ARM库的问题,atom处理器利用houdini的hook技术把arm的二进制代码翻译成x86平台上可执行的代码。
Intel是移动市场的新进者,最近出了几款面向移动市场的SOC,面对应用程序支持缺乏的问题,有两条路可以走:
1.逐家拜访应用开发商,要求他们重新为intel的cpu编译一份应用。
2.使用二进制转换,使得已有的应用可以运行在intel的cpu上。
该产品并不开源,可以在联想的K900 ROM里面可以找到二进制版本。一共有三个文件:libhoudini.so libdvm_houdini.so houdini_armlibs.tgz
原理是:当Dalvik VM加载lib失败时,程序流会再次尝试用libhoudini中的my_dlopen打开。该lib类似于QEMU的user mode emulator,通过虚拟一个ARM的CPU (包含指令集和寄存器,但是没有外设模拟),加载基于ARM指令集的lib。目前还不清楚是基于解析执行,还是JIT方式实现。
采用类似技术的产品有valgrind(模拟X86 CPU来检测程序内存泄露),qemu user mode(可以在X86 linux下执行mips的elf文件)
类似概念的产品
为ARM服务器产品准备的二进制翻译软件 (X86转ARM指令集) http://server.chinabyte.com/345/12451845.shtml
FX!32 (X86 windows程序运行在Alpha CPU的Windows NT上) http://en.wikipedia.org/wiki/FX!32 至于X86上的Android兼容,Dalvik 做java解释执行,对于高性能应用使用native C原生代码,只针对硬件平台编译,x86、ARM或MIPS都有相应的二进制文件,Intel推出atom平台支出,就引入了“二进制转换”(Binary Translation)功能,来解决x86无法运行ARM库的问题,atom处理器利用houdini的hook技术把arm的二进制代码翻译成x86平台上可执行的代码。
相关文章推荐
- 关于Android x86平台 函数hook知识的一点记录
- 关于cocos2d-x项目移植到android平台的时候明明已经将资源复制到assets还是出现的assets is nullptr的问题
- Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- flex android开发中关于请求报文技术操作问题
- >Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- Unity在移动平台上的运用:关于打包到 Android 端的问题
- Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- 关于Eclipse搭建android开发平台问题
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- 关于android微信QQ等平台分享功能实现中遇到的问题处理
- Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- 关于第三方应用(Android平台)通过微信分享文字、图片的问题研究。
- 关于Eclipse搭建android开发平台问题
- 关于使用smack4.x 在android平台开发时的jar包问题小结
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- android 5.0以上so文件关于平台支持问题的浅析
- 【转载】Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题