本发明属于二进制翻译,具体涉及一种二进制应用程序兼容运行方法及装置。
背景技术:
1、近年来,随着国家信息安全防护要求的不断提高,国产处理器得到了长足发展。由于国产处理器不断升级迭代,低版本国产处理器上的二进制应用程序如何跨平台迁移到高版本处理器上并兼容运行成为了一个急需解决的问题。二进制翻译技术是实现二进制应用程序兼容运行的重要方法,通过进行指令翻译可以实现不重新编译源代码直接在其他平台运行二进制应用程序,可以有效解决二进制应用程序兼容运行的问题,意义重大。
2、龙芯处理器是我国目前市场占有率大、较为主流和先进的处理器,其大量的二进制应用程序需要跨平台移植到高版本处理器兼容运行。目前针对龙芯二进制应用程序翻译的方法主要是在目标处理器平台加载源处理器平台应用程序的二进制文件,进行指令翻译,并在目标平台执行翻译生成的二进制代码。
3、针对目标处理器平台和源处理器平台指令集架构不同的情况,为实现指令等价翻译和不同平台状态正确模拟,二进制应用程序兼容运行存在效率低下的问题。
技术实现思路
1、(一)要解决的技术问题
2、本发明要解决的技术问题是如何提供一种二进制应用程序兼容运行方法及装置,以解决二进制应用程序兼容运行存在效率低下的问题。
3、(二)技术方案
4、为了解决上述技术问题,本发明提出一种二进制应用程序兼容运行装置,该装置包括:源平台二进制应用程序预处理模块、翻译模块、优化模块和目标平台二进制应用程序编译运行模块;
5、源平台二进制应用程序预处理模块,用于对源平台二进制应用程序进行加载和解析;
6、翻译模块,用于对解析后的二进制应用程序进行解码和翻译操作;
7、优化模块,用于优化翻译和运行过程;
8、目标平台二进制应用程序编译运行模块,用于编译运行翻译后的符合目标平台指令集架构的二进制应用程序。
9、进一步地,该装置运行在目标平台上,采用边翻译边执行的方式实现二进制应用程序兼容运行。
10、进一步地,在操作系统启动时会挂载binfmt_misc,当运行源平台程序时,操作系统会通过binfmt_misc自动调用该装置来进行二进制应用程序预处理、翻译、优化和运行,实现源平台下的二进制应用程序兼容运行在目标平台上。
11、进一步地,源平台为mips平台,目标平台为龙芯loongarch平台。
12、本发明还提供一种二进制应用程序兼容运行方法,该方法包括两个阶段:第一个阶段为二进制应用程序预处理,第二个阶段为二进制应用程序翻译、优化和运行;
13、阶段一:二进制应用程序预处理
14、在运行mips程序时,操作系统根据binfmt_misc判断所运行的程序为mips程序并调用该装置,源平台二进制应用程序预处理模块加载并解析mips elf文件,源平台二进制应用程序预处理模块把所有的代码段和数据段加载到该装置虚拟地址空间中,并将mipself文件中程序入口地址存入pc;
15、阶段二:二进制应用程序翻译、优化和运行
16、该装置从pc中获取mips elf文件中程序入口地址并开始翻译代码,对mips代码进行反汇编,并调用编译器划分基本块;该装置维护了一个哈希表,会将翻译完成的基本块信息存入哈希表中;
17、在进行翻译时,首先进入哈希表,查询基本块是否被翻译,如果已被翻译则通过目标平台二进制应用程序编译运行模块运行翻译后loongarch平台代码,并更新pc继续获取下一基本块进行翻译,直至整个翻译过程完成;如果未被翻译则通过翻译模块、优化模块和目标平台二进制应用程序编译运行模块进行翻译、优化和运行:首先把基本块存储为中间码;然后翻译中间码进行指令等价替换,在此过程中,优化模块通过多线程优化方法和进程上下文切换优化方法进行优化,翻译完成后维护哈希表添加已翻译的基本块信息,然后退出翻译并生成loongarch平台代码,并通过目标平台二进制应用程序编译运行模块运行loongarch平台代码;最后更新pc继续获取下一基本块进行翻译,直至整个翻译过程完成。
18、进一步地,mips elf文件里面存储了程序的机器信息、体系结构、程序入口地址、代码段、数据段。
19、进一步地,多线程优化方法包括:该装置创建两个翻译线程和一个执行线程,翻译线程用于翻译源平台二进制应用文件,执行线程用于执行翻译后的目标平台二进制应用程序。
20、进一步地,并行执行代码翻译线程和代码执行线程。
21、进一步地,进程上下文切换优化方法包括:该装置判断基本块是否以直接地址转移指令为结尾,直接地址转移指令的作用将下一步要执行的指令地址送入pc,如果某一基本块以直接地址转移指令为结尾,该装置在翻译时直接从pc获取下一基本块进行翻译,而不会进行上下文切换,否则进行上下文切换;在本基本块翻译完成后,该装置在翻译后的上一基本块的末尾添加跳转指令指向本基本块。
22、进一步地,在执行翻译后的基本块时,通过跳转指令连续执行。
23、(三)有益效果
24、本发明提出一种二进制应用程序兼容运行方法及装置,本发明提出一种二进制应用程序兼容运行方法及装置,该装置运行在龙芯loongarch平台上,能够实现mips平台的二进制应用程序兼容运行,并通过多线程和进程上下文切换优化提高二进制应用程序兼容运行效率。
1.一种二进制应用程序兼容运行装置,其特征在于,该装置包括:源平台二进制应用程序预处理模块、翻译模块、优化模块和目标平台二进制应用程序编译运行模块;
2.如权利要求1所述的二进制应用程序兼容运行装置,其特征在于,该装置运行在目标平台上,采用边翻译边执行的方式实现二进制应用程序兼容运行。
3.如权利要求2所述的二进制应用程序兼容运行装置,其特征在于,在操作系统启动时会挂载binfmt_misc,当运行源平台程序时,操作系统会通过binfmt_misc自动调用该装置来进行二进制应用程序预处理、翻译、优化和运行,实现源平台下的二进制应用程序兼容运行在目标平台上。
4.如权利要求2或3所述的二进制应用程序兼容运行装置,其特征在于,源平台为mips平台,目标平台为龙芯loongarch平台。
5.一种基于权利要求4所述的装置的二进制应用程序兼容运行方法,其特征在于,该方法包括两个阶段:第一个阶段为二进制应用程序预处理,第二个阶段为二进制应用程序翻译、优化和运行;
6.如权利要求4所述的二进制应用程序兼容运行方法,其特征在于,mips elf文件里面存储了程序的机器信息、体系结构、程序入口地址、代码段、数据段。
7.如权利要求4所述的二进制应用程序兼容运行方法,其特征在于,多线程优化方法包括:该装置创建两个翻译线程和一个执行线程,翻译线程用于翻译源平台二进制应用文件,执行线程用于执行翻译后的目标平台二进制应用程序。
8.如权利要求7所述的二进制应用程序兼容运行方法,其特征在于,并行执行代码翻译线程和代码执行线程。
9.如权利要求4所述的二进制应用程序兼容运行方法,其特征在于,进程上下文切换优化方法包括:该装置判断基本块是否以直接地址转移指令为结尾,直接地址转移指令的作用将下一步要执行的指令地址送入pc,如果某一基本块以直接地址转移指令为结尾,该装置在翻译时直接从pc获取下一基本块进行翻译,而不会进行上下文切换,否则进行上下文切换;在本基本块翻译完成后,该装置在翻译后的上一基本块的末尾添加跳转指令指向本基本块。
10.如权利要求9所述的二进制应用程序兼容运行方法,其特征在于,在执行翻译后的基本块时,通过跳转指令连续执行。
