当前位置: 首页 > 专利查询>谷歌公司专利>正文

共享对象层级上的二进制转换制造技术

技术编号:16672728 阅读:20 留言:0更新日期:2017-11-30 17:16
公开了一种用于二进制转换的技术。主机平台接收与主机不同的客户机平台的程序。所述程序使用共享对象或动态加载库的集合,与主机平台不兼容。所述主机平台确定所述主机平台是否具有对应的共享对象或动态加载库,其中,所述对应的共享对象或动态加载库实现与来自所述集合内的指定的共享对象或动态加载库的公共外部接口。如果所述主机平台具有所述对应的共享对象或动态加载库,则所述主机平台使用所述对应的共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述程序的执行。如果所述主机平台没有所述对应的共享对象或动态加载库,则所述主机平台执行所述指定的共享对象或动态加载库的二进制转换,以供所述程序的执行。

【技术实现步骤摘要】
【国外来华专利技术】共享对象层级上的二进制转换相关申请的交叉引用本申请涉及与其同时提交的、代理人案卷号为096553-0074并且标题为“BINARYTRANSLATIONINTONATIVECLIENT”的国际专利申请,其全部公开内容以引用方式并入本文中。
技术介绍
主题技术总体上涉及二进制转换(binarytranslation)技术。通常为指定平台编译软件程序,指定平台可包括指定硬件架构、指定操作系统和/或指定库。用户可能希望在具有不同硬件架构、不同操作系统或不同库的与指定平台不同的另一平台上运行该软件程序。在这种情况下,被针对其编译程序的平台被称为客户机,其上将要执行代码的平台被称为主机。为了调节程序以便在主机平台上执行,主机平台可被编程为对指定客户机平台进行(用软件)仿真,并且可执行二进制转换,以将软件程序从其原始形式转换成可在具有被仿真的指定客户机平台的主机平台上运行的新软件程序。在二进制转换中,针对指定客户机平台的二进制代码被转换成针对主机平台的二进制代码。
技术实现思路
根据一些方面,主题技术涉及一种方法。所述方法包括在主机平台处,接收为与所述主机平台不同的指定客户机平台编写的软件程序,其中,所述软件程序使用共享对象或动态加载库的集合,并且其中,所述软件程序与所述主机平台不兼容。所述方法包括在所述主机平台内对所述指定客户机平台进行仿真。所述方法包括确定所述主机平台是否具有对应的共享对象或动态加载库,其中,所述对应的共享对象或动态加载库实现与来自所述共享对象或动态加载库的集合内的指定共享对象或动态加载库的公共外部接口。所述方法包括如果所述主机平台具有所述对应的共享对象或动态加载库,则使用所述对应的共享对象或动态加载库取代所述指定共享对象或动态加载库以供所述主机平台内的所述软件程序的执行。所述方法包括如果所述主机平台没有所述对应的共享对象或动态加载库,则执行所述指定共享对象或动态加载库的二进制转换,以供所述主机平台内的所述软件程序的执行。根据一些方面,主题技术涉及一种存储指令和数据的非瞬时计算机可读介质。所述指令包括用于在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序的代码,其中,所述软件程序使用共享对象或动态加载库的集合,并且其中,所述软件程序与所述主机平台不兼容。所述指令包括用于确定所述主机平台是否具有对应的共享对象或动态加载库的代码,其中,所述对应的共享对象或动态加载库实现与来自所述共享对象或动态加载库的集合内的指定共享对象或动态加载库的公共外部接口。所述指令包括用于如果所述主机平台具有所述对应的共享对象或动态加载库则使用所述对应的共享对象或动态加载库取代所述指定共享对象或动态加载库以供所述主机平台内的所述软件程序的执行的代码。所述指令包括用于如果所述主机平台没有所述对应的共享对象或动态加载库则执行所述指定共享对象或动态加载库的二进制转换以供所述主机平台内的所述软件程序的执行的代码。根据一些方面,主题技术涉及一种系统。所述系统包括一个或多个处理器和存储指令和数据的存储器。所述指令包括用于在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序的代码,其中,所述软件程序使用共享对象或动态加载库的集合,并且其中,所述软件程序与所述主机平台不兼容。所述指令包括用于在所述主机平台内对所述指定客户机平台进行仿真的代码。所述指令包括用于确定所述主机平台是否具有对应的共享对象或动态加载库的代码,其中,所述对应的共享对象或动态加载库实现与来自所述共享对象或动态加载库的集合内的指定共享对象或动态加载库的公共外部接口。所述指令包括如果所述主机平台具有所述对应的共享对象或动态加载库则通过动态地将所述软件程序中的链接修改成指向取代所述指定共享对象或动态加载库的所述对应的共享对象或动态加载库的链接来使用所述对应的共享对象或动态加载库取代所述指定共享对象或动态加载库以供所述主机平台内的所述软件程序的执行的代码。所述指令包括用于如果所述主机平台没有所述对应的共享对象或动态加载库则执行所述指定共享对象或动态加载库的二进制转换以供所述主机平台内的所述软件程序的执行的代码。要理解,根据下面的详细描述,主题技术的其他配置将变得容易显而易见,其中,通过图示的方式示出和描述了主题技术的各种配置。如将认识到的,主题技术能够具有其他不同的配置,其各个细节能够在各种其他方面进行修改,这全都不脱离主题技术的范围。因此,附图和详细描述在本质上被认为是例示性的,而非限制性的。附图说明在所附权利要求中阐述了主题技术的特征。然而,出于解释的目的,在下面的附图中阐述了所公开主题的几个方面。图1A图示了共享对象层级上的二进制转换中可涉及的示例客户机。图1B图示了共享对象层级上的二进制转换中可涉及的示例主机。图2图示了可用于完成共享对象层级上的二进制转换的示例过程。图3概念性地图示了实现主题技术的一些实现方式所用的示例电子系统。具体实施方式以下阐述的具体实施方式旨在作为对主题技术的各种配置的描述,并不旨表示可用于实践主题技术的唯一配置。附图并入本文中,构成详细描述的部分。具体实施方式包括具体细节,目的是提供对主题技术的透彻理解。然而,将清楚且显见的是,主题技术不限于本文中阐述的具体细节,可在没有这些具体细节的情况进行实践。在某些情形下,某些结构和组件以框图形式示出,以避免模糊主题技术的构思。如本文所使用的,“平台”可指一段软件运行所需的环境。该环境可包括硬件架构、操作系统和/或一个或多个库。示例平台包括硬件上的操作系统、硬件上的操作系统和硬件上的上运行的NativeClient。“二进制转换(binarytranslation)”可指从一个平台获取二进制代码并将其转变(convert)成针对另一个平台的二进制代码的过程。“共享对象”、“共享库”或“动态库”可以是旨在由一个或多个可执行文件共享或访问的文件。“共享对象”、“共享库”或“动态库”与可执行的文件或其他对象/库在加载时或运行时链接。“编组(mashalling)”可以指将从一个平台上使用的数据格式变换(transforming)成另一个平台上使用的数据格式的对象的存储器表示的过程。另外,以上术语中的每个都包含其简单和普通的含义。应用可在平台上运行。应用可具有主要可执行文件和零个或多个动态库。动态库可以是特定于应用的或者是公共的。特定于应用的动态库实现特定于应用的行为并且可由应用供应商将其与应用一起分发。公共动态库实现许多不同应用可能需要的行为(例如,在显示单元上显示图像)。这样的库通常由它们自己的供应商(例如,操作系统的开发方或硬件的开发方)分立地进行分发。在某些情况下,公共动态库可具有用于许多不同操作系统的版本。一起存在于特定操作系统上的主要可执行文件和动态库可通过进行函数调用来相互通信。主要可执行文件和动态库可通过进行系统调用与操作系统进行通信。主要可执行文件、动态库和操作系统在特定硬件上运行。主要可执行文件、动态库和操作系统是针对该特定硬件编译的软件段,并且使用特定硬件指令集用二进制代码来表示。“二进制转换”可指从一个平台(客户机平台)获取二进制代码并将其转换成针对另一个平台(主机平台或目标平台)的二进制代码的过程。二进制转换的一个目标是运行最初为主机平台上的客户机平台编本文档来自技高网...
共享对象层级上的二进制转换

【技术保护点】
一种方法,包括:在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序,其中所述软件程序使用共享对象或动态加载库的集合,并且其中所述软件程序与所述主机平台不兼容;在所述主机平台内对所述指定客户机平台进行仿真;确定所述主机平台是否具有对应的共享对象或动态加载库,其中所述对应的共享对象或动态加载库实现与来自所述共享对象或动态加载库的集合内的指定的共享对象或动态加载库的公共外部接口;如果所述主机平台具有所述对应的共享对象或动态加载库,则使用所述对应的共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行;以及如果所述主机平台没有所述对应的共享对象或动态加载库,则执行所述指定的共享对象或动态加载库的二进制转换,以供所述主机平台内的所述软件程序的执行。

【技术特征摘要】
【国外来华专利技术】1.一种方法,包括:在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序,其中所述软件程序使用共享对象或动态加载库的集合,并且其中所述软件程序与所述主机平台不兼容;在所述主机平台内对所述指定客户机平台进行仿真;确定所述主机平台是否具有对应的共享对象或动态加载库,其中所述对应的共享对象或动态加载库实现与来自所述共享对象或动态加载库的集合内的指定的共享对象或动态加载库的公共外部接口;如果所述主机平台具有所述对应的共享对象或动态加载库,则使用所述对应的共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行;以及如果所述主机平台没有所述对应的共享对象或动态加载库,则执行所述指定的共享对象或动态加载库的二进制转换,以供所述主机平台内的所述软件程序的执行。2.根据权利要求1所述的方法,其中,执行所述指定的共享对象或动态加载库的所述二进制转换包括创建第一二进制转换对象,其中所述第一二进制转换对象的外部接口包括对用于所述主机平台的第二二进制转换对象或对最初用于所述主机平台的对象的函数调用。3.根据权利要求1所述的方法,其中,所述共享对象或动态加载库的集合包括与所述主机平台处的所述对应的共享对象或动态加载库关联的至少一个系统库和不与所述主机平台处的所述对应的共享对象或动态加载库关联的至少一个供应商库。4.根据权利要求1所述的方法,其中,所述指定客户机平台包括ARM硬件,并且其中,所述主机平台包括x86硬件。5.根据权利要求1所述的方法,其中,使用所述对应的共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行包括:动态地将所述软件程序中的链接修改成指向取代所述指定的共享对象或动态加载库的所述对应的共享对象或动态加载库的链接。6.根据权利要求1所述的方法,其中,使用所述对应的共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行包括:提供桥接器,使得对所述指定的共享对象或动态加载库的调用被变换成对所述对应的共享对象或动态加载库的调用。7.根据权利要求1所述的方法,进一步包括:接收需要访问被仿真的客户机平台的状态或所述主机平台的状态的调用;以及响应于所述调用,将所仿真的客户机平台的状态与所述主机平台的状态同步。8.一种非瞬时计算机可读介质,所述非瞬时计算机可读介质包括指令,所述指令在由一个或多个计算机执行时致使所述一个或多个计算机实现一种方法,所述方法包括:在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序,其中所述软件程序使用共享对象或动态加载库的集合,并且其中所述软件程序与所述主机平台不兼容;确定所述主机平台是否具有对应的共享对象或动态加载库,其中所述对应的共享对象或动态加载库实现与来自所述共享对象或动态加载库的集合内的指定的共享对象或动态加载库的公共外部接口;如果所述主机平台具有所述对应的共享对象或动态加载库,则使用所述对应的共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行;以及如果所述主机平台没有所述对应的共享对象或动态加载库,则执行所述指定的共享对象或动态加载库的二进制转换,以供所述主机平台内的所述软件程序的执行。9.根据权利要求8所述的非瞬时计算机可读介质,其中,执行所述指定的共享对象或动态加载库的所述二进制转换包括创建第一二进制转换对象,其中所述第一二进制转换对象的外部接口包括对用于所述主机平台的第二二进制转换对象或对最初用于所述主机平台的...

【专利技术属性】
技术研发人员:叶夫根尼·艾尔钦尼古拉·伊戈蒂安德烈·哈尔佳温德米特里·波卢欣
申请(专利权)人:谷歌公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1