CN102799461A - 一种应用的执行方法、装置及电子设备 - Google Patents
一种应用的执行方法、装置及电子设备 Download PDFInfo
- Publication number
- CN102799461A CN102799461A CN2011101357972A CN201110135797A CN102799461A CN 102799461 A CN102799461 A CN 102799461A CN 2011101357972 A CN2011101357972 A CN 2011101357972A CN 201110135797 A CN201110135797 A CN 201110135797A CN 102799461 A CN102799461 A CN 102799461A
- Authority
- CN
- China
- Prior art keywords
- instruction
- instruction set
- hardware platform
- carried out
- directly
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明的目的在于提供一种应用的执行方法、装置及电子设备,该执行方法,应用于基于第一硬件平台的电子设备中,包括:获取当前待执行的第一指令集合;判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;执行所述第二指令集合中的指令。本发明解决了应用的跨平台运行的问题。
Description
技术领域
本发明属于电子领域,特别涉及一种应用的执行方法、装置及电子设备。
背景技术
Android(安卓)系统是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。
Android是现在最流行的移动互联平台,它一般是基于ARM硬件平台的Linux操作系统。现在Android平台的智能手机终端产品已经非常普遍。
然而发明人在实现本发明实施例的过程中发现,现有技术至少存在如下问题:
Android系统是基于ARM硬件平台的Linux操作系统,因此其在x86平台下的运行是一个问题,即使其移植到x86系统后,Android系统的上层有不计其数的第三方应用,这些应用很多包含自己专有的库文件,而很多库文件甚至是应用本身是基于ARM平台编译完成的,其无法在x86平台的系统中直接运行的,所以导致许多应用在安装后,无法在移植后的Android-x86上使用。
当然,上述是以Android(安卓)系统移植到x86平台为例说明问题,应当理解的是,其他系统移植到x86平台后同样会存在由于硬件平台差异导致的应用无法运行的问题。
发明内容
本发明实施例的目的在于提供一种应用的执行方法、装置及电子设备,使得应用能够顺利运行。
为了实现上述目的,本发明实施例提供了一种应用的执行方法,所述执行方法应用于基于第一硬件平台的电子设备中,包括:
获取当前待执行的第一指令集合;
判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;
在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;
执行所述第二指令集合中的指令。
上述的应用的执行方法,其中,对所述第一指令集合进行转换处理,获得第二指令集合具体为:
对所述第一指令集合中的指令进行反编译,得到源码;
对所述源码在第一硬件平台下进行编译,得到所述第二指令集合。
上述的应用的执行方法,其中,对所述第一指令集合进行转换处理获得第二指令集合具体包括:
选择所述第一指令集合当前待处理的指令;
将当前待处理的指令切分成至少一条微指令;
对所述至少一条微指令翻译成所述第一硬件平台下的等价指令;
重复上述步骤直至所述第一指令集合的指令处理完毕。
上述的应用的执行方法,其中,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行的步骤中,通过文件头结构中的架构字段判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行。
上述的应用的执行方法,其中,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述第一指令集合为安卓系统下运行的应用所需要调用的对象的指令组成的集合,所述对象在加载时,记录了一指示所述第一指令集合中的指令所支持的硬件平台的支持信息,所述判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行的步骤中,直接通过所述支持信息进行判断。
为了实现上述目的,本发明实施例提供了一种应用的执行装置,所述执行装置应用于基于第一硬件平台的电子设备中,包括:
获取模块,用于获取当前待执行的第一指令集合;
判断模块,用于判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;
转换模块,用于在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;
执行模块,用于执行所述第二指令集合中的指令。
上述的应用的执行装置,其中,所述转换模块具体包括:
反编译单元,用于对所述第一指令集合中的指令进行反编译,得到源码;
编译单元,用于对所述源码在第一硬件平台下进行编译,得到所述第二指令集合。
上述的应用的执行装置,其中,所述转换模块具体包括:
指令选择单元,用于选择所述第一指令集合当前待处理的指令;
切分单元,用于将当前待处理的指令切分成至少一条微指令;
翻译单元,用于对所述至少一条微指令翻译成所述第一硬件平台下的等价指令。
上述的应用的执行装置,其中,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述判断模块具体用于通过文件头结构中的架构字段判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行。
上述的应用的执行装置,其中,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述第一指令集合为安卓系统下运行的应用所需要调用的对象的指令组成的集合,所述判断模块具体用于通过一支持信息判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,所述支持信息为所述对象在加载时记录的一指示所述第一指令集合中的指令所支持的硬件平台的信息。
为了实现上述目的,本发明实施例提供了一种电子设备,所述电子设备具有第一硬件平台,所述硬件平台包括一处理器,所述处理器用于获取当前待执行的第一指令集合,并判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,在所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,并执行所述第二指令集合中的指令,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同。
所述处理器包括:
获取模块,用于获取当前待执行的第一指令集合;
判断模块,与所述获取模块连接,用于判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;
转换模块,与所述判断模块连接,用于在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;
执行模块,与所述转换模块连接,用于执行所述第二指令集合中的指令。
本发明实施例具有以下有益效果:
本发明实施例的应用的执行方法、装置及电子设备中,对于无法在第一硬件平台的电子设备直接执行的应用进行指令转换处理,将无法在第一硬件平台上直接执行的指令集合转换为一个能够在第一硬件平台上直接执行,且执行结果相同的等效指令集合,实现应用的顺利运行。
附图说明
图1所示为本发明实施例的应用的执行方法的流程示意图;
图2所示为本发明实施例的应用的执行装置的流程示意图。
具体实施方式
本发明实施例的应用的执行方法、装置及电子设备中,对于无法在第一硬件平台的电子设备直接执行的应用进行指令转换处理,将无法在第一硬件平台上直接执行的指令集合转换为一个能够在第一硬件平台上直接执行,且执行结果相同的等效指令集合,实现应用的顺利运行。
如图1所示,本发明实施例的应用的执行方法,应用于基于第一硬件平台的电子设备中,包括:
步骤11,获取当前待执行的第一指令集合;
步骤12,判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;
步骤13,在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;
步骤14,执行所述第二指令集合中的指令。
本发明实施例的应用的执行方法中,对于当前需要执行的第一指令集合中,首先判断其是否能够所述第一硬件平台上直接执行,如果其无法在第一硬件平台上直接执行,则将其转换为能够得到相同结果,且能在第一硬件平台上直接执行的第二指令集合,进而通过执行该第二指令集合中的指令来得到相同的结果,使得应用能够顺利运行。
在本发明的具体实施例中,该第一硬件平台可以是X86平台、ARM平台、Mips(Microprocessor without interlocked piped stages,无内部互锁流水级的微处理器)平台、SPARC(Scalable Processor ARChitecture,可扩展处理器架构)平台等各种类型的处理器平台中的任意一种,而第二硬件平台可以是上述硬件平台中除第一硬件平台外的其他平台中的任意一种。在本发明实施例的应用的执行方法中,需要对指令集合进行转换处理,在本发明的具体实施例中可以通过各种方式来实现,分别说明如下。
<方式一>
通常,计算机中的对象是利用高级语言如C,Pascal等语言进行编程的,后再经过编译程序生成可以被计算机系统直接执行的对象。反编译即是指将这些文件反编译还原成汇编语言或其他高级语言,而对反汇编得到的代码即可通过编译过程得到可以在另一个硬件平台下使用的对象,因此,在方式一中,即可利用上述方式来进行转换处理。
在方式一中,对所述第一指令集合进行转换处理,获得第二指令集合具体为:
对所述第一指令集合中的指令进行反编译,得到源码;
对所述源码在第一硬件平台下进行编译,得到所述第二指令集合。
<方式二>
在方式一中,使用反汇编的方式得到源代码,然而,对于复杂的对象,通过反汇编的方式得到源代码是比较难实现的,即使可以实现,通过反汇编得到的代码的效率也大打折扣,因此,在本发明的具体实施例中,通过另外一种效率较高的方式来得到第二指令集合。
指令的转换属于处理器虚拟化的范畴,一般最简单直接的方法就是解释执行。
对所述第一指令集合进行转换处理获得第二指令集合具体包括:
选择所述第一指令集合当前待处理的指令;
将当前待处理的指令切分成至少一条微指令;
对所述至少一条微指令翻译成所述第一硬件平台下的等价指令;
重复上述步骤直至所述第一指令集合的指令处理完毕。
在实现方式二中,对指令的转换通过处理器虚拟化的方式来实现,也就是解释执行的方式,所谓解释执行就是对一条指令A通过B指令模拟出它的执行效果。
直接的解释执行方式有很大的性能损失,因此,在它的基础上出现了很多改进的方法,比如说动态代码翻译技术。
简单来说,动态代码翻译的基本思想就是把每一条A指令切分成为若干条微指令,每条微指令由一段简单的代码(如C代码)来实现,然后通过中间工具提取相应的目标文件来生成一个动态代码生成器,最后把这些微指令组合成一个函数。
之前已经提到第一硬件平台和第二硬件平台多种多样,下面仅以ARM平台下的指令到X86平台的等价指令的转换为例进行说明。
比如说一条ARM的指令:
0x70005a0e bl 0x700046dc
这是一条跳转指令,一般是进去某个函数的入口,通过切分,可以将它分为下面几条微码:
Movi_i32r14,$0x70005a13
Movi_i32pc,$0x700046dc
Exit_tb $0x0
因为在ARM架构中,寄存器r14一般存放子程序的返回地址,而r15(即pc)寄存器是程序计数器,它指向下条指令的地址,改变pc的值,则会产生地址跳转的作用。
所以上面的三条微码的意思就十分清楚:1.保存子程序返回地址;2.改变pc值,跳转进子程序;3.返回。
上述的三条微码,通过翻译,最后可以得到x86下的等价指令:
Mov $0x70005a13,%eax
Mov %eax,0x38(%ebp)
Mov $0x700046dc,%eax
Mov %eax,0x3c(%ebp)
Xor %eax,%eax
Jmp 0x621 da328
执行上述的等价指令即可得到相同的结果。
Android系统的移植工作的目的是为了在特定的硬件上运行Android系统。移植方面主要的工作有两个部分:
1、将编译器从ARM切换为X86的,重新编译整个系统,包括kernel、驱动、系统c库(bionic)及其它系统库等;
2、硬件支持相关的工作,由于x86硬件架构与ARM硬件架构是有差异的,所以有些额外的工作,比如说:
ethernet支持
鼠标滚轮支持
待机等其它电源管理支持
存储卡及移动存储设备支持
支持运行在虚拟机上(virtualbox、vmware等)
支持安装到ext3、ext2、ntfs、fat32等硬盘格式
改善键盘支持,可以使用usb键盘
fn键的支持
3g设备的支持
......
在Android系统需要移植的内容,主要包含了以下的各个部分:显示部分(Display)、用户输入部分(Input)、包括Event驱动+EventHub(Android标准内容)、多媒体编解码(Codec)等。
Android中具有很多组件,但并不是每一个部件都需要移植,对于一些纯软的组件,就没有移植的必要。对于一些部件,例如浏览器引擎,虽然需要下层网络的支持,但是并非直接为其移植网络接口,而是通过无线局域网或者电话系统数据连接来完成标准的网络接口。
Android的移植主要可以分成几个类型:基本图形用户界面(GUI)部分,包括显示部分和用户输入部分、和硬件相关的加速部分(包括媒体编解码和OpenGL)、音视频输入输出环节(包括音频,视频输出和摄像头部分)、连接部分(包括无线局域网,蓝牙,GPS等)、电话部分以及附属部件(包括传感器、背光、振动器等)。
对于大部分子系统,硬件抽象层和驱动程序都需要根据实际系统的情况实现,例如:传感器部分、音频部分、视频部分、摄像头部分、电话部分。也有一些子系统,硬件抽象层是标准的,只需要实现Linux内核中的驱动程序即可,例如:输入部分、振动器部分、无线局域网部分、蓝牙部分等。对于有标准的硬件抽象层的系统,有的时候通常也需要做一些配置工作。
通过上述的过程,即可实现Android系统得移植。
在本发明的具体实施例中,需要判断指令能否在所述第一硬件平台上直接执行,对于以上的情况,所述第一硬件平台为X86平台,所述判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行的步骤中,通过对象的文件头结构中的架构字段判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行。
由于Android系统是以Linux为内核的,所以以Linux的elf文件为例说明如下:
Elf文件的架构中包括ELF Header(头),其中Header的结构如下:
可以发现,其中有一个架构字段Elf32_Half e_machine,其表示的就是当前文件所对应的机器架构,ARM架构下的文件的e_machine的值是40,而x86架构下e_machine的值是3,所以通过Header中e_machine位的值即可确定能否在所述第一硬件平台上直接执行,如e_machine的值是40的话,则可以确定无法在x86平台下执行,而e_machine的值是3的话,则可以确定可以在x86平台下执行。
在本发明具体实施例中,上述第一指令集合中的指令可能是应用本身,也可能是应用需要调用的对象,如库函数等其他对象。
当一个Android的Java应用/架构需要调用一某个动态库中的本地函数时,其会使用JNI(Java Native Interface,JAVA本地接口)来实现。JNI在Java类的初始化时调用loadLibrary去加载库文件,实际加载的操作是在davlik虚拟机的代码中调用dlopen来完成。Dalvik加载这个库后,会立即去调用这个库的JNI_OnLoad函数(如果它有这个函数的话)。一般,在JNI_OnLoad中,会做一些这个库的初始化工作,返回库支持的android版本号,以及注册公开给上层java代码调用的本地函数,使用JNI的RegisterNatives函数来进行本地函数的注册。
最后,所有注册的本地库函数最后会形成一个线性表结构,里面存放的是各个本地函数在当前进程中的函数指针,当有java代码调用某个具体的本地函数时,就会通过函数指针调用该函数。
因此,在本发明的具体实施例中,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述第一指令集合为安卓系统下运行的应用所需要调用的对象的指令组成的集合时,在该对象在加载时,记录了一指示所述第一指令集合中的指令所支持的硬件平台的支持信息,则后续判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行的步骤中就可以直接通过所述支持信息进行判断。
当然,上述的支持信息也从上述的Header结构中得到。
本发明实施例的应用的执行装置,应用于基于第一硬件平台的电子设备中,如图2所示,包括:
获取模块,用于获取当前待执行的第一指令集合;
判断模块,用于判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;
转换模块,用于在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;
执行模块,用于执行所述第二指令集合中的指令。
上述的应用的执行装置中,所述转换模块可以通过反编译和编译来实现指令的转换,具体包括:
反编译单元,用于对所述第一指令集合中的指令进行反编译,得到源码;
编译单元,用于对所述源码在第一硬件平台下进行编译,得到所述第二指令集合。
上述的应用的执行装置中,所述转换模块可以通过切分翻译来实现指令的转换,所述转换模块具体包括:
指令选择单元,用于选择所述第一指令集合当前待处理的指令;
切分单元,用于将当前待处理的指令切分成至少一条微指令;
翻译单元,用于对所述至少一条微指令翻译成所述第一硬件平台下的等价指令。
上述的应用的执行装置中,所述第一硬件平台可以是X86平台,所述第二硬件平台可以是ARM平台,所述判断模块具体用于通过文件头结构中的架构字段判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行。
上述的应用的执行装置中,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述第一指令集合为安卓系统下运行的应用所需要调用的对象的指令组成的集合,所述判断模块具体用于通过一支持信息判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,所述支持信息为所述对象在加载时记录的一指示所述第一指令集合中的指令所支持的硬件平台的信息。
本发明实施例的电子设备具有第一硬件平台,所述硬件平台包括一处理器,所述处理器用于获取当前待执行的第一指令集合,并判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,在所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,并执行所述第二指令集合中的指令,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同。
所述处理器包括:
获取模块,用于获取当前待执行的第一指令集合;
判断模块,与所述获取模块连接,用于判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;
转换模块,与所述判断模块连接,用于在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;
执行模块,与所述转换模块连接,用于执行所述第二指令集合中的指令。
本发明实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同位里上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种应用的执行方法,其特征在于,所述执行方法应用于基于第一硬件平台的电子设备中,包括:
获取当前待执行的第一指令集合;
判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;
在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;
执行所述第二指令集合中的指令。
2.根据权利要求1所述的应用的执行方法,其特征在于,对所述第一指令集合进行转换处理,获得第二指令集合具体为:
对所述第一指令集合中的指令进行反编译,得到源码;
对所述源码在第一硬件平台下进行编译,得到所述第二指令集合。
3.根据权利要求1所述的应用的执行方法,其特征在于,对所述第一指令集合进行转换处理获得第二指令集合具体包括:
选择所述第一指令集合当前待处理的指令;
将当前待处理的指令切分成至少一条微指令;
对所述至少一条微指令翻译成所述第一硬件平台下的等价指令;
重复上述步骤直至所述第一指令集合的指令处理完毕。
4.根据权利要求1所述的应用的执行方法,其特征在于,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行的步骤中,通过文件头结构中的架构字段判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行。
5.根据权利要求1所述的应用的执行方法,其特征在于,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述第一指令集合为安卓系统下运行的应用所需要调用的对象的指令组成的集合,所述对象在加载时,记录了一指示所述第一指令集合中的指令所支持的硬件平台的支持信息,所述判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行的步骤中,直接通过所述支持信息进行判断。
6.一种应用的执行装置,其特征在于,所述执行装置应用于基于第一硬件平台的电子设备中,包括:
获取模块,用于获取当前待执行的第一指令集合;
判断模块,用于判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;
转换模块,用于在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;
执行模块,用于执行所述第二指令集合中的指令。
7.根据权利要求6所述的应用的执行装置,其特征在于,所述转换模块具体包括:
反编译单元,用于对所述第一指令集合中的指令进行反编译,得到源码;
编译单元,用于对所述源码在第一硬件平台下进行编译,得到所述第二指令集合。
8.根据权利要求6所述的应用的执行装置,其特征在于,所述转换模块具体包括:
指令选择单元,用于选择所述第一指令集合当前待处理的指令;
切分单元,用于将当前待处理的指令切分成至少一条微指令;
翻译单元,用于对所述至少一条微指令翻译成所述第一硬件平台下的等价指令。
9.根据权利要求6所述的应用的执行装置,其特征在于,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述判断模块具体用于通过文件头结构中的架构字段判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行。
10.根据权利要求6所述的应用的执行装置,其特征在于,所述第一硬件平台为X86平台,所述第二硬件平台为ARM平台,所述第一指令集合为安卓系统下运行的应用所需要调用的对象的指令组成的集合,所述判断模块具体用于通过一支持信息判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,所述支持信息为所述对象在加载时记录的一指示所述第一指令集合中的指令所支持的硬件平台的信息。
11.一种电子设备,其特征在于,所述电子设备具有第一硬件平台,所述硬件平台包括一处理器,所述处理器用于获取当前待执行的第一指令集合,并判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,在所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,并执行所述第二指令集合中的指令,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同。
12.根据权利要求11所述的电子设备,其特征在于,所述处理器包括:
获取模块,用于获取当前待执行的第一指令集合;
判断模块,与所述获取模块连接,用于判断所述第一指令集合中的指令能否在所述第一硬件平台上直接执行,获取一判断结果;
转换模块,与所述判断模块连接,用于在所述判断结果指示所述第一指令集合中的指令无法在所述第一硬件平台上直接执行时,对所述第一指令集合进行转换处理,获得第二指令集合,其中,所述第二指令集合中的指令能够在所述第一硬件平台上直接执行,且所述第一指令集合在不同于第一硬件平台的第二硬件平台的执行结果和所述第二指令集合在所述第一硬件平台上执行的结果相同;
执行模块,与所述转换模块连接,用于执行所述第二指令集合中的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110135797.2A CN102799461B (zh) | 2011-05-24 | 2011-05-24 | 一种应用的执行方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110135797.2A CN102799461B (zh) | 2011-05-24 | 2011-05-24 | 一种应用的执行方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102799461A true CN102799461A (zh) | 2012-11-28 |
CN102799461B CN102799461B (zh) | 2015-09-23 |
Family
ID=47198577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110135797.2A Active CN102799461B (zh) | 2011-05-24 | 2011-05-24 | 一种应用的执行方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102799461B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885814A (zh) * | 2014-03-20 | 2014-06-25 | 百度在线网络技术(北京)有限公司 | 在x86架构上运行ARM APK的模拟器装置和方法 |
CN104021012A (zh) * | 2014-05-16 | 2014-09-03 | 可牛网络技术(北京)有限公司 | 应用程序的下载方法、执行异常的分析方法和装置 |
CN104740872A (zh) * | 2015-04-13 | 2015-07-01 | 北京奇虎科技有限公司 | 模拟安卓环境中游戏程序运行控制方法及装置 |
CN105824295A (zh) * | 2015-01-08 | 2016-08-03 | 中国航天科工集团第四研究院指挥自动化技术研发与应用中心 | 一种硬件设备控制方法、装置及系统 |
CN109142868A (zh) * | 2018-08-10 | 2019-01-04 | 上海电机学院 | 电力谐波检测仪 |
CN110428872A (zh) * | 2019-09-26 | 2019-11-08 | 深圳华大基因科技服务有限公司 | 一种基因比对指令集的转换方法及装置 |
CN111857117A (zh) * | 2019-04-17 | 2020-10-30 | 百度(美国)有限责任公司 | 用于在自动驾驶期间解码gps消息的gps消息解码器 |
CN111913745A (zh) * | 2020-08-28 | 2020-11-10 | 中国人民解放军国防科技大学 | 一种嵌入式多指令集处理器设计方法 |
CN113220300A (zh) * | 2021-04-29 | 2021-08-06 | 麒麟软件有限公司 | 一种应用于Android系统x86架构上的ARM指令集转换方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030115578A1 (en) * | 2001-12-18 | 2003-06-19 | Igor Liokumovich | PC platform simulation system employing efficient memory access simulation in a direct execution environment |
CN101145109A (zh) * | 2007-11-01 | 2008-03-19 | 上海交通大学 | 利用中间指令集的二进制翻译方法 |
-
2011
- 2011-05-24 CN CN201110135797.2A patent/CN102799461B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030115578A1 (en) * | 2001-12-18 | 2003-06-19 | Igor Liokumovich | PC platform simulation system employing efficient memory access simulation in a direct execution environment |
CN101145109A (zh) * | 2007-11-01 | 2008-03-19 | 上海交通大学 | 利用中间指令集的二进制翻译方法 |
Non-Patent Citations (2)
Title |
---|
吴浩: "《二进制翻译系统QEMU的优化技术》", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》, no. 6, 15 June 2007 (2007-06-15), pages 138 - 785 * |
张柏年: "《基于动态二进制翻译技术的反编译研究》", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》, no. 12, 15 December 2009 (2009-12-15), pages 138 - 482 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885814A (zh) * | 2014-03-20 | 2014-06-25 | 百度在线网络技术(北京)有限公司 | 在x86架构上运行ARM APK的模拟器装置和方法 |
CN104021012A (zh) * | 2014-05-16 | 2014-09-03 | 可牛网络技术(北京)有限公司 | 应用程序的下载方法、执行异常的分析方法和装置 |
CN104021012B (zh) * | 2014-05-16 | 2018-05-01 | 可牛网络技术(北京)有限公司 | 应用程序的下载方法、执行异常的分析方法和装置 |
CN105824295A (zh) * | 2015-01-08 | 2016-08-03 | 中国航天科工集团第四研究院指挥自动化技术研发与应用中心 | 一种硬件设备控制方法、装置及系统 |
CN104740872A (zh) * | 2015-04-13 | 2015-07-01 | 北京奇虎科技有限公司 | 模拟安卓环境中游戏程序运行控制方法及装置 |
CN104740872B (zh) * | 2015-04-13 | 2018-06-19 | 北京奇虎科技有限公司 | 模拟安卓环境中游戏程序运行控制方法及装置 |
CN109142868A (zh) * | 2018-08-10 | 2019-01-04 | 上海电机学院 | 电力谐波检测仪 |
CN111857117A (zh) * | 2019-04-17 | 2020-10-30 | 百度(美国)有限责任公司 | 用于在自动驾驶期间解码gps消息的gps消息解码器 |
CN110428872A (zh) * | 2019-09-26 | 2019-11-08 | 深圳华大基因科技服务有限公司 | 一种基因比对指令集的转换方法及装置 |
CN110428872B (zh) * | 2019-09-26 | 2020-03-10 | 深圳华大基因科技服务有限公司 | 一种基因比对指令集的转换方法及装置 |
CN111913745A (zh) * | 2020-08-28 | 2020-11-10 | 中国人民解放军国防科技大学 | 一种嵌入式多指令集处理器设计方法 |
CN111913745B (zh) * | 2020-08-28 | 2022-06-28 | 中国人民解放军国防科技大学 | 一种嵌入式多指令集处理器设计方法 |
CN113220300A (zh) * | 2021-04-29 | 2021-08-06 | 麒麟软件有限公司 | 一种应用于Android系统x86架构上的ARM指令集转换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102799461B (zh) | 2015-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102799461A (zh) | 一种应用的执行方法、装置及电子设备 | |
CN104102506B (zh) | 一种基于ARM平台的Android启动加速方法 | |
CN104011679A (zh) | 异构并行处理平台的软件库 | |
CN103365668B (zh) | 一种动态链接库装载和链接的方法、装置 | |
US8966236B2 (en) | Dynamically redirecting boot to another operating system | |
CN101110055B (zh) | 在单元测试中实现通用桩函数的装置及其实现方法 | |
CN102027460B (zh) | 动态声明性应用程序描述 | |
CN101084485A (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
CN103729235A (zh) | Java虚拟机的编译方法和Java虚拟机 | |
CN104246695A (zh) | 嵌套仿真和动态链接环境 | |
CN101458629A (zh) | 嵌入式实时操作系统中实现动态加载的方法和装置 | |
CN103827809A (zh) | 用于虚拟分区监测的系统和方法 | |
US9235389B2 (en) | Method of providing embedded software development tool for supporting embedded software development environment based on native building, and apparatus thereof | |
CN102364442B (zh) | 将Wine从x86移植到ARM平台的方法 | |
CN101650663A (zh) | 一种数据库系统及其升级的方法 | |
WO2020248510A1 (zh) | 一种终端应用行为反射的处理方法 | |
CN102147734A (zh) | 运行时类提取的方法和系统 | |
CN110291508A (zh) | 垃圾收集器 | |
US10191725B2 (en) | Rearrangeable code optimization modules | |
CN104685443A (zh) | 锁定引导数据用以更快引导 | |
CN101364178A (zh) | Bios在电脑装置开机时的执行方法与管理方法 | |
CN103473059A (zh) | 一种支持多种体系架构的通用操作系统 | |
CN101894317B (zh) | 数据变化驱动业务逻辑的方法和系统 | |
CN103631645A (zh) | 一种基于数字医疗的数字家庭中间件系统 | |
CN102141915B (zh) | 一种基于RTLinux的设备实时控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |