CN107408052B - 共享对象层级上的二进制转换的方法、系统和介质 - Google Patents

共享对象层级上的二进制转换的方法、系统和介质 Download PDF

Info

Publication number
CN107408052B
CN107408052B CN201580078239.3A CN201580078239A CN107408052B CN 107408052 B CN107408052 B CN 107408052B CN 201580078239 A CN201580078239 A CN 201580078239A CN 107408052 B CN107408052 B CN 107408052B
Authority
CN
China
Prior art keywords
dynamically loaded
shared object
host platform
library
platform
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.)
Active
Application number
CN201580078239.3A
Other languages
English (en)
Other versions
CN107408052A (zh
Inventor
叶夫根尼·艾尔钦
尼古拉·伊戈蒂
安德烈·哈尔佳温
德米特里·波卢欣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN107408052A publication Critical patent/CN107408052A/zh
Application granted granted Critical
Publication of CN107408052B publication Critical patent/CN107408052B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

公开了一种用于二进制转换的技术。主机平台接收与主机不同的客户机平台的程序。所述程序使用共享对象或动态加载库的集合,与主机平台不兼容。所述主机平台确定所述主机平台是否具有对应的共享对象或动态加载库,其中,所述对应的共享对象或动态加载库实现与来自所述集合内的指定的共享对象或动态加载库的公共外部接口。如果所述主机平台具有所述对应的共享对象或动态加载库,则所述主机平台使用所述对应的共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述程序的执行。如果所述主机平台没有所述对应的共享对象或动态加载库,则所述主机平台执行所述指定的共享对象或动态加载库的二进制转换,以供所述程序的执行。

Description

共享对象层级上的二进制转换的方法、系统和介质
相关申请的交叉引用
本申请涉及与其同时提交的、代理人案卷号为096553-0074并且标题为“BINARYTRANSLATION INTO NATIVE CLIENT”的国际专利申请,其全部公开内容以引用方式并入本文中。
背景技术
主题技术总体上涉及二进制转换(binary translation)技术。通常为指定平台编译软件程序,指定平台可包括指定硬件架构、指定操作系统和/或指定库。用户可能希望在具有不同硬件架构、不同操作系统或不同库的与指定平台不同的另一平台上运行该软件程序。在这种情况下,被针对其编译程序的平台被称为客户机,其上将要执行代码的平台被称为主机。为了调节程序以便在主机平台上执行,主机平台可被编程为对指定客户机平台进行(用软件)仿真,并且可执行二进制转换,以将软件程序从其原始形式转换成可在具有被仿真的指定客户机平台的主机平台上运行的新软件程序。在二进制转换中,针对指定客户机平台的二进制代码被转换成针对主机平台的二进制代码。
发明内容
根据一些方面,主题技术涉及一种方法。所述方法包括在主机平台处,接收为与所述主机平台不同的指定客户机平台编写的软件程序,其中,所述软件程序使用共享对象或动态加载库的集合,并且其中,所述软件程序与所述主机平台不兼容。所述方法包括在所述主机平台内对所述指定客户机平台进行仿真。所述方法包括确定所述主机平台是否具有对应的共享对象或动态加载库,其中,所述对应的共享对象或动态加载库实现与来自所述共享对象或动态加载库的集合内的指定共享对象或动态加载库的公共外部接口。所述方法包括如果所述主机平台具有所述对应的共享对象或动态加载库,则使用所述对应的共享对象或动态加载库取代所述指定共享对象或动态加载库以供所述主机平台内的所述软件程序的执行。所述方法包括如果所述主机平台没有所述对应的共享对象或动态加载库,则执行所述指定共享对象或动态加载库的二进制转换,以供所述主机平台内的所述软件程序的执行。
根据一些方面,主题技术涉及一种存储指令和数据的非瞬时计算机可读介质。所述指令包括用于在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序的代码,其中,所述软件程序使用共享对象或动态加载库的集合,并且其中,所述软件程序与所述主机平台不兼容。所述指令包括用于确定所述主机平台是否具有对应的共享对象或动态加载库的代码,其中,所述对应的共享对象或动态加载库实现与来自所述共享对象或动态加载库的集合内的指定共享对象或动态加载库的公共外部接口。所述指令包括用于如果所述主机平台具有所述对应的共享对象或动态加载库则使用所述对应的共享对象或动态加载库取代所述指定共享对象或动态加载库以供所述主机平台内的所述软件程序的执行的代码。所述指令包括用于如果所述主机平台没有所述对应的共享对象或动态加载库则执行所述指定共享对象或动态加载库的二进制转换以供所述主机平台内的所述软件程序的执行的代码。
根据一些方面,主题技术涉及一种系统。所述系统包括一个或多个处理器和存储指令和数据的存储器。所述指令包括用于在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序的代码,其中,所述软件程序使用共享对象或动态加载库的集合,并且其中,所述软件程序与所述主机平台不兼容。所述指令包括用于在所述主机平台内对所述指定客户机平台进行仿真的代码。所述指令包括用于确定所述主机平台是否具有对应的共享对象或动态加载库的代码,其中,所述对应的共享对象或动态加载库实现与来自所述共享对象或动态加载库的集合内的指定共享对象或动态加载库的公共外部接口。所述指令包括如果所述主机平台具有所述对应的共享对象或动态加载库则通过动态地将所述软件程序中的链接修改成指向取代所述指定共享对象或动态加载库的所述对应的共享对象或动态加载库的链接来使用所述对应的共享对象或动态加载库取代所述指定共享对象或动态加载库以供所述主机平台内的所述软件程序的执行的代码。所述指令包括用于如果所述主机平台没有所述对应的共享对象或动态加载库则执行所述指定共享对象或动态加载库的二进制转换以供所述主机平台内的所述软件程序的执行的代码。
要理解,根据下面的详细描述,主题技术的其他配置将变得容易显而易见,其中,通过图示的方式示出和描述了主题技术的各种配置。如将认识到的,主题技术能够具有其他不同的配置,其各个细节能够在各种其他方面进行修改,这全都不脱离主题技术的范围。因此,附图和详细描述在本质上被认为是例示性的,而非限制性的。
附图说明
在所附权利要求中阐述了主题技术的特征。然而,出于解释的目的,在下面的附图中阐述了所公开主题的几个方面。
图1A图示了共享对象层级上的二进制转换中可涉及的示例客户机。
图1B图示了共享对象层级上的二进制转换中可涉及的示例主机。
图2图示了可用于完成共享对象层级上的二进制转换的示例过程。
图3概念性地图示了实现主题技术的一些实现方式所用的示例电子系统。
具体实施方式
以下阐述的具体实施方式旨在作为对主题技术的各种配置的描述,并不旨表示可用于实践主题技术的唯一配置。附图并入本文中,构成详细描述的部分。具体实施方式包括具体细节,目的是提供对主题技术的透彻理解。然而,将清楚且显见的是,主题技术不限于本文中阐述的具体细节,可在没有这些具体细节的情况进行实践。在某些情形下,某些结构和组件以框图形式示出,以避免模糊主题技术的构思。
如本文所使用的,“平台”可指一段软件运行所需的环境。该环境可包括硬件架构、操作系统和/或一个或多个库。示例平台包括
Figure GDA0002835314990000041
硬件上的
Figure GDA0002835314990000042
操作系统、
Figure GDA0002835314990000043
硬件上的
Figure GDA0002835314990000044
操作系统和
Figure GDA0002835314990000045
硬件上的
Figure GDA0002835314990000046
上运行的Native Client。“二进制转换(binary translation)”可指从一个平台获取二进制代码并将其转变(convert)成针对另一个平台的二进制代码的过程。“共享对象”、“共享库”或“动态库”可以是旨在由一个或多个可执行文件共享或访问的文件。“共享对象”、“共享库”或“动态库”与可执行的文件或其他对象/库在加载时或运行时链接。“编组(mashalling)”可以指将从一个平台上使用的数据格式变换(transforming)成另一个平台上使用的数据格式的对象的存储器表示的过程。另外,以上术语中的每个都包含其简单和普通的含义。
应用可在平台上运行。应用可具有主要可执行文件和零个或多个动态库。动态库可以是特定于应用的或者是公共的。特定于应用的动态库实现特定于应用的行为并且可由应用供应商将其与应用一起分发。公共动态库实现许多不同应用可能需要的行为(例如,在显示单元上显示图像)。这样的库通常由它们自己的供应商(例如,操作系统的开发方或硬件的开发方)分立地进行分发。在某些情况下,公共动态库可具有用于许多不同操作系统的版本。
一起存在于特定操作系统上的主要可执行文件和动态库可通过进行函数调用来相互通信。主要可执行文件和动态库可通过进行系统调用与操作系统进行通信。
主要可执行文件、动态库和操作系统在特定硬件上运行。主要可执行文件、动态库和操作系统是针对该特定硬件编译的软件段,并且使用特定硬件指令集用二进制代码来表示。
“二进制转换”可指从一个平台(客户机平台)获取二进制代码并将其转换成针对另一个平台(主机平台或目标平台)的二进制代码的过程。二进制转换的一个目标是运行最初为主机平台上的客户机平台编译的应用,而无需访问应用的源代码并重新编译源代码。
在某些情况下,对于所谓的全机仿真,通过获取原始的主要可执行、动态库和操作系统映像并且将以上全部在主机硬件上运行来实现二进制转换。在这些情况下,使用二进制转换对主机硬件上的客户机硬件的指令集进行仿真。这种方法的益处是非常精确地进行客户机仿真。缺点是性能相对慢,因为包括客户机操作系统和库的大量客户机代码必须被二进制转换。
在某些情况下,对于所谓的系统调用仿真,通过获取原始的主要可执行和动态的库并且将它们在与主机关联的不同操作系统或不同硬件上运行来实现二进制转换。在这些情况下,原始客户机程序及其动态库被二进制转换成客户机系统调用,经由主机系统调用对客户机系统进行仿真。这种方法不像以前方法一样对客户机代码进行精确仿真,但会更有效,因为原始客户机操作系统没有被二进制转换。另外,只有应用所需的系统调用才会在主机中被仿真,从而大大降低了复杂度。
主题技术可能包括进一步探索。具体地,主题技术可包括从客户机获取原始的主要可执行文件和特定于应用的动态库并且利用最初来自主机的公共动态库来运行它们。使用二进制转换来仿真对特定于应用的动态库(最初来自客户机)的函数调用、对客户机操作系统的系统调用、和客户机硬件的指令集。这种方法的益处包括客户机的公共动态库不需要被二进制转换。替代地,只有原始的主要可执行文件和特定于应用的动态库所需要的函数调用在主机处进行仿真。这种方法比全机仿真或系统调用仿真更有效率。
主题技术的一个复杂性是对函数调用的仿真。功能调用接口在不同平台上会有很大差异。具体地,不同的平台可具有不同的调用约定,其中,短语“调用约定”可指不同的平台如何将参数传递给函数以及如何从函数获得返回值。不同的平台可具有对于数据对象而言不同的二进制表示,包括数据模型的差异以及不同数据类型的大小和对齐。另外,具有相同含义和函数的数据对象可在不同的平台上具有不同的内部表示。例如,在GNU C库(glibc)和Bionic C Library中,FILE对象不同,即使glibc和bionic二者中的数据模型相同。
该复杂性可通过调用约定的转变和数据对象的编组来应对。这可基于所涉及函数的已知原型和所涉及数据对象的二进制布局来完成。然而,在某些情况下,调用约定的转变和数据对象的编组会不切实际。在这些情况下,可使用下述的几种解决方案。一种解决方案包括为客户机和主机使用相同的地址空间和1:1指针映射。这样避免了编组指向数据对象的指针。另一种解决方案包括提供代理功能,以将调用约定从客户机转变成主机(例如,“主机函数封装器”)并且从主机转变成客户机(例如,“客户机函数封装器”)。相同的地址可用于主机函数及其对应的主机函数封装器,以避免编组指向主机函数的指针。
当前的二进制转换方案包括全机器仿真或用户级仿真。如本文所使用的,术语“用户级”可指例如可不属于内核的用户空间操作系统软件。在全机仿真中,对整个客户机硬件进行仿真,包括用于客户机平台的软件程序连同用于客户机系统的操作系统。替选地,可使用主机平台和主机操作系统对与指定的客户机平台关联的客户机硬件和操作系统进行仿真,并且软件程序可在该仿真框架上运行。上述的二进制转换方案消耗了大量资源(诸如,处理器时间和存储器)。如以上图示的,用于二进制转换的新技术可能是期望的。
主题技术涉及从指定的客户机平台迁移到主机平台的软件程序的共享对象层级上的二进制转换。软件程序最初是为指定的客户机平台编译的,与主机平台不同。软件程序与主机平台不兼容。软件程序使用共享对象或库的集合,这些对象或库的集合包括对指定客户机硬件系统的系统库的依赖性以及供应商创建的且特定于软件程序的供应商库。
在二进制转换期间,指定的客户机平台在主机平台内进行仿真。对于软件程序所使用的共享对象或动态加载库的集合中的每个对象或动态加载库,二进制转换器确定主机平台是否具有实现与该集合中的对象或动态加载库的公共外部接口的对应的共享对象或动态加载库。如果对象是库,则库可以是系统库(其与主机硬件处的对应的系统库/对象关联,其中,对应的库/对象具有与库的公共外部接口)或供应商库(其可不与主机硬件处的对应的库/对象关联)。系统库的示例可以是用于在几乎每个平台中存在的显示单元上呈现原始图形的库。供应商库的示例可以是由软件程序的供应商创建的专门用于该软件程序的库。当用户在实现指定的客户机硬件系统的机器处购买或请求下载软件程序时,供应商库可被提供给用户,供其下载(例如,经由互联网或经由诸如CD或USB盘的可移动盘)。
如本文所使用的,如果对应的共享对象或动态加载库实现与原始对象或动态加载库的公共外部接口,则在用于客体机平台的原始对象或动态加载库的主机平台中存在“对应的共享对象或动态加载库”。如果原始对象和对应的共享对象或动态加载库实现类似或基本相同的函数调用并且响应于函数调用实现类似或基本相同的行为,则原始对象或动态加载库以及对应的共享对象或动态加载库具有“公共外部接口”。
如果对象或动态加载库(例如,系统库)对应于主机硬件处的对应的共享对象或动态加载库(其中对应的共享对象或动态加载库具有与对象相同的行为),则二进制转换器使用对应的共享对象或动态加载库来取代用于主机硬件内软件程序的执行的对象。二进制转换器没有二进制转换指定的共享对象或动态加载库。二进制转换器动态地解析第一个程序内的依赖关系以链接到主机平台对应的共享对象或动态加载库而不是指定的客户机平台的对象。
具体地,二进制转换器与实现后期绑定的动态链接器机制协作,并且经由专门的蹦床函数(trampoline)来解析主机库中的函数条目。例如,蹦床函数可执行应用二进制接口(ABI)转换并且有时执行语义转换。蹦床函数可用对API的主机版本的调用来替代对API的客户机版本的调用。可使用定制的可执行和可链接格式(ELF)链接器来实现蹦床函数。在加载期间,ELF链接器可将适宜的蹦床函数插入要从客户机传送到主机的对象的导入表中。语义转换可包括通过以下来进行函数指针API的转换:使函数指针API适合于主机的调用、或例如由于客户机和主机平台上的系统库的对齐或不同实现方式而导致主机和客户机具有不同要求的情况下转换对象二进制布局。
例如,如果客户机代码调用了qsort()标准库函数,则客户机代码将'qsort'作为库导入表中的未解析条目。在后期绑定期间,用进行以下两个步骤的指向机器代码的指针来填充此条目:(1)从仿真的客户机寄存器和堆栈读取参数,使得它们对主机函数而言是可见的;和(2)根据'qsort'函数的已知签名来转变参数。换句话讲2,客户机指针被转变为主机指针,整数按原样传递,函数指针参数被封装成动态生成的主机代码,使得可在需要时由主机'qsort'仿真调用函数指针参数。客户机函数指针的封装可包括从主机ABI到客户机ABI的反向转变。
结果,在使用优化的函数的主机版本执行所期望操作的同时,客户机程序实现与预期相同的行为。在主机处的比较器功能正使用二进制转换来运行,而排序算法本身以本机速度运行。
客户机共享对象中的外部共享对象引用可要么使用如上所述的主机共享对象要么使用其他客户机共享对象来解析。在后一种情况下,不需要蹦床函数,因为调用方和被调用方服从同一ABI。因此,自定义加载器的行为方式可与标准加载器相同。
根据主题技术的一些方法确保了二进制转换(其可能比本地执行更慢且更耗资源)只被应用于供应商提供的共享对象,对于供应商提供的共享对象,没有实现本地主机。这些方法是对其他方案的改进,这些其他方案涉及提供供应商提供的库和系统库二者的二进制转换。
上述技术需要直接在主机平台的硬件上执行主机平台的系统库以及主机平台上的指定的客户机平台仿真上的供应商库。结果,主机平台的(例如,寄存器,堆栈等的)状态会需要与仿真的指定的客户机平台的状态同步。当发生从客户机调用主机函数时,仿真层执行所有需要的参数转换,可包括将来自仿真客户机状态的参数移至寄存器和堆栈或主机硬件,使得主机代码可像其正被正常调用一样动作。
图1A图示了共享对象层级上的二进制转换中可涉及的示例访客机100A。客户机100A可以是任何计算装置,例如,膝上型计算机、台式计算机、平板计算机、移动电话、个人数字助理(PDA)、电子音乐播放器、智能手表、与一个或多个处理器和存储器耦合的电视机等。在一些示例中,客户机100A具有ARM硬件。
如所示出的,客户机100A包括处理单元102A、网络接口104A和存储器106A。处理单元102A包括一个或多个处理器。处理单元102A可包括中央处理单元(CPU)、图形处理单元(GPU)或任何其他处理单元。处理单元102A执行存储在计算机可读介质(例如,存储器106A)中的计算机指令。网络接口104A允许客户机100A在网络(例如,互联网、内联网、蜂窝网络、局域网、广域网、有线网络、无线网络、虚拟专用网(VPN)等)中发送和接收数据。存储器106A存储数据和/或指令。存储器106A可以是高速缓存单元、存储单元、内部存储器单元或外部存储器单元中的一个或多个。如所图示的,存储器106A包括客户机硬件架构108A、软件程序110A、客户机系统对象122A和124A以及供应商对象126A和128A。
客户机硬件架构108A可包括客机100A所使用的任何平台,例如,寄存器或系统堆栈。软件程序110A在其执行期间使用客户机硬件架构108A。为客户机100A编写软件程序110A并且将软件程序110A设计成与客机100A中存在的客户机硬件架构108A一起工作。软件程序110A可以是任何软件程序,例如,文字处理器、消息传送或电子邮件程序、音频或视频播放器、在线或离线游戏程序等。
如所图示的,软件程序110A包括链接112A、114A、116A和118A。链接112A和114A分别与客户机系统对象122A和124A通过接口连接。客户机系统对象122A和124A是在主机(例如,结合下面的图1B讨论的主机100B)中存在针对其的对应的共享对象或动态加载的库的对象,其中,对应的共享对象或动态加载库实现与客户机系统对象122A或124A的公共外部接口和公共行为。例如,客户机系统对象122A或124A可对应于在任何全部或大多数平台中实现的系统库。系统库的示例包括用于在显示单元处呈现原始图形的图形库或用于在音频输出单元处播放声音文件的声音库。链接116A和118A分别与供应商对象126A和128A通过接口连接。
供应商对象126A和128A是在主机机器(例如,结合下面的图1B讨论的主机机器100B)中不存在针对其的对应的共享对象或动态加载库的对象,其中,对应的共享对象或动态加载库实现与供应商系统对象126A或128A的公共外部接口和公共行为。例如,当用户在客户机机器100A处购买或请求软件程序时,供应商对象126A和128A可被提供给客户机器100A的用户进行下载(例如,经由互联网或经由诸如CD或USB盘的可移动盘)。
如以上所讨论的,软件程序110A被设计为在客户机机器100A(或具有相同平台的另一机器)上运行。软件程序110A被设计成与客户端硬件架构108A和客户机系统对象122A和124A通过接口连接。然而,在某些情况下,可能期望在具有与客户机机器100A的平台不同的平台的主机机器(例如,下面结合图1B讨论的主机机器100B)上执行客户机软件程序110A。在一些实现方式中,主题技术提供允许软件程序110A在这样的主机上执行的技术。
图1B图示了共享对象层级上的二进制转换中可涉及的示例主机机器100B。主机机器100B可以是任何计算装置,例如,膝上型计算机、台式计算机、平板计算机、移动电话、个人数字助理(PDA)、电子音乐播放器、智能手表、与一个或多个处理器和存储器耦合的电视等。客户机机器100B具有与客户机机器100A的平台不同的平台。例如,如果客户机机器100A的平台是ARM硬件,则主机机器100B的平台不是ARM硬件,而可以是例如x86硬件。
如所示出的,客户机机器100B包括处理单元102B、网络接口104B和存储器106B。处理单元102B包括一个或多个处理器。处理单元102B可包括中央处理单元(CPU)、图形处理单元(GPU)或任何其他处理单元。处理单元102A执行存储在计算机可读介质(例如,存储器106A)中的计算机指令。网络接口104B允许主机机器100B在网络(例如,互联网、内联网、蜂窝网络、局域网、广域网、有线网络、无线网络、虚拟专用网(VPN)等)中发送和接收数据。存储器106B存储数据和/或指令。存储器106B可以是高速缓存单元、存储单元、内部存储器单元或外部存储器单元中的一个或多个。如所图示的,存储器106B包括主机硬件架构107B、软件程序110B、主机系统对象122B和124B以及二进制转换器130B,二进制转换器130B包括仿真的客户机硬件架构108B和供应商对象126B和128B的二进制转换(BT)。
客户机硬件架构107B可包括客户机100B所使用的任何平台,例如,寄存器或系统堆栈。为主机100B编写的软件在其执行期间可使用主机硬件架构107B。主机硬件架构107B可能不知道二进制转换器130B的内容(仿真的客户机硬件架构108B和供应商对象126B和128B的二进制转换)的存在。因此,主机平台可不提供用于仿真的客户机硬件架构108B和供应商对象126B和128B的二进制转换访问主机硬件架构107B的接口并且可以其常规方式操作。
二进制转换器130B生成并存储用软件实现并对应于客户机机器100A中的客机硬件体架构108A的仿真的客户机硬件架构108B。主机机器100B的仿真的客户机硬件架构108B具有与客户机机器100A的客户机硬件架构108A相同的功能和行为。例如,如果客户机机器100A的客户机硬件架构108A包括用硬件实现的寄存器和堆栈,则仿真的客户机硬件架构108B可包括具有与主机机器100B的硬件上用软件实现的相同的功能和行为的寄存器和堆栈。
软件程序110B对应于客户机机器100A的软件程序110A。然而,软件程序100B被配置成在主机机器100B上执行。软件程序110B与主机机器100B的仿真的客户机硬件架构108B通过接口连接,而不是与客户机机器100A的客户机硬件架构108A通过接口连接。如所图示的,软件程序包括分别指向主机系统对象122B和124B的链接112B和114B。指向主机系统对象122B和124B的链接112B和114B取代指向图1A的客户机系统对象112A和114A的链接112A和114A。软件程序包括分别指向供应商对象126B和128B的二进制转换的链接116B和118B。如下面结合图2更详细讨论的,供应商对象126A和128A具有被执行以获得供应商对象126B和128B的二进制转换的二进制转换,因为在主机机器100B上不存在与供应商对象126A和128A具有相同外部接口、功能和行为的对应的共享对象或动态加载库。主机系统对象122B和124B最初是为主机机器100B的架构而开发的。类似地,客户机系统对象122A和124A最初是为客户机机器100A的架构而开发的。
链接112B对应于链接112A,主机系统对象122B对应于客户机系统对象122A。换句话讲,主机系统对象122B实现与客户机系统对象122A的公共外部接口并且与其具有公共的功能和行为。结果,在从客户机机器100A到主机机器100B的移植过程中,可调节软件程序110B/110A,以(借助链接112B/112A)链接到主机系统对象122B而非客户机系统对象122A。
链接114B对应于链接114A,主机系统对象124B对应于客户机系统对象124A。换句话讲,主机系统对象124B与客户机系统对象124A实现公共外部接口并且与其具有公共的功能和行为。结果,在从客户机机器100A到主机机器100B的移植过程中,可调节软件程序110B/110A,以(借助链接114B/114A)链接到主机系统对象124B而非客户机系统对象124A。
链接116B对应于链接116A。由二进制转换器130B生成的对象126B是客户机机器100A的供应商对象126A的二进制转换。二进制转换的结果是,对象126B在主机机器100B上执行并且实现与供应商对象126A的外部接口、相似的功能和行为。因此,软件程序110B可链接到二进制转换器130B内的对象126B,而非供应商对象126A。
链接118B对应于链接118A。由二进制转换器130B生成的对象128B是客户机机器100A的供应商对象128A的二进制转换。二进制转换的结果是,对象128B在主机机器100B上执行并且实现与供应商对象128A的外部接口、相似的功能和行为。因此,软件程序110B可链接到二进制转换器130B内的对象128B,而非供应商对象128A。
重要的是,主机硬件架构107B可能不知道仿真的客户机硬硬件架构108B并且可以以其常规方式工作,而不需要为仿真的客户机硬件架构108B提供接口。二进制转换器130B隐藏仿真的客户机硬件架构108B。二进制转换器130B将仿真的客户机硬件架构108B隐藏在其自身内部并且使供应商对象126B和128B的二进制转换与主机机器100B的期望(诸如,主机机器100B的ABI)兼容。
在图1A和图1B中,结合两个系统对象122A/122B和124A/124B以及两个供应商对象126A和128A来描述主题技术。然而,主题技术可用任何数量(例如,0、1、2或多于2个)系统对象和任何数量(例如,0、1、2或多于2个)供应商对象来实现。
图2图示了可用于完成共享对象层级上的二进制转换的示例过程200。
过程200先开始步骤210,在步骤210中,主机平台(例如,主机机器100B)接收为与主机平台不同的指定客户机平台(例如,客客户机机器100A)而编写的软件程序(例如,软件程序110A)。软件程序使用共享对象或动态加载库(例如,对象122A、124A、126A和128A)的集合。软件程序与主机平台不兼容。
在步骤220中,主机平台对主机平台内的指定客户机平台进行仿真。例如,如果客户机平台包括寄存器和系统堆栈,则主机平台可创建客户机硬件的寄存器和系统堆栈的软件仿真。软件程序可在仿真的客户机平台而非原始的客户机平台上操作。
在步骤230中,主机平台确定主机平台是否具有对应的共享对象或动态加载库,其中,对应的共享对象或动态加载库实现与来自共享对象或动态加载库的集合内的指定的共享对象或动态加载库的公共外部接口。指定的共享对象或动态加载库可以是具有对应主机系统对象(例如,主机系统对象122B或124B)的客户机系统对象(例如,客户机系统对象122A或124A),所述对应主机系统对象实现与所述客户机系统对象的公共外部接口。可替选地,指定的共享对象或动态加载库可以是可不与这样的对应的主机系统对象关联的供应商对象(例如,供应商对象126A或128A)。如果主机平台具有对应的共享对象或动态加载库,则过程200继续到步骤240。如果主机平台没有对应的共享对象或动态加载库,则过程200继续到步骤250。
共享对象或动态加载库的集合可以包括库集合。该库集合可包括与主机平台的对应的共享对象或动态加载库关联的至少一个系统库和可不与主机平台的对应的共享对象或动态加载库关联的至少一个供应商库。
在步骤240中,在确定了主机平台具有对应的共享对象或动态加载库时,主机平台使用对应的共享对象或动态加载库取代指定的共享对象或动态加载库以供主机平台内的软件程序的执行。主机平台可动态地(例如,在运行时而不是在编译时)将软件程序中的链接修改成取代指定的共享对象或动态加载库的对应的共享对象或动态加载库的链接。(例如,参照图1A至图1B,链接112B/112A可被动态修改成取代客户机系统对象122A的主机系统对象122B的链接。)主机平台可提供桥接器,使得对指定的共享对象或动态加载库的调用被转换成对对应的共享对象或动态加载库的调用。在步骤240之后,过程200结束。
在步骤250中,在确定了主机平台没有对应的共享对象或动态加载库时,主机平台执行指定的共享对象或动态加载库的二进制转换,以供主机平台内的软件程序的执行。执行二进制转换可包括创建二进制转换对象,其中,二进制转换对象的外部接口包括对其他二进制转换的供应商对象或主机平台的系统对象的函数调用。在某些情况下,可在指定客户机平台中执行但不可在主机平台处执行的对象中的任何指令可被转换成可在主机平台处执行的指令。例如,如果主机平台是不需要提供跨越寄存器32的指令(如在x86架构的一些实现方式中是真实的)的64寄存器架构,则访问寄存器30-35的指令可被改成访问寄存器30-31的指令和访问寄存器32-35的指令。代码的转换可“正好”完成。换句话讲,当控制从与系统对象相关联的代码传递到与供应商对象关联的代码时,可发生转换,反之亦然。换句话讲,当系统对象停止执行并且供应商对象开始执行时,可发生转换,或反之亦然。“正好”方法的一个益处是,软件程序中未在主机平台上执行的代码未被转换,从而减少花费在二进制转换上的时间和处理资源。在步骤250之后,过程200结束。
在一些示例中,在主机平台处执行的软件程序可接收需要访问被仿真的客户机平台(例如,被仿真的客户硬件架构108B)的状态或主机平台的状态(例如,主机硬件架构107B)的调用。主机平台可响应于调用而将被仿真的客户机平台的状态与主机平台的状态同步。例如,主机平台可传播将被仿真的客户机平台的堆栈或寄存器变成主机平台的堆栈或寄存器(反之亦然)的改变。该同步的结果是,可根据被仿真的客户机平台和主机平台的同步状态来处理调用。在同步期间,仿真层可执行所有需要的参数转换,可包括将参数从被仿真的客户机状态移至寄存器和堆栈或主机硬件,使得主机代码可像其正被正常调用一样动作。
如上所述,过程200的步骤210-250按照一定次序串行地实现。然而,步骤210-250可按任何次序实现。在一些示例中,步骤210-250中的两个或更多个可并行地实现。
图3概念性图示了实现主题技术的一些实现方式所用的电子系统300。例如,可使用电子系统300的布置来实现客户机机器100A或主机机器100B中的一个或多个。电子系统300可以是计算机(例如,移动电话、PDA)或任何其他种类的电子装置。这样的电子系统包括各种类型的计算机可读介质和用于各种其他类型的计算机可读介质的接口。电子系统300包括总线305、处理器310、系统存储器315、只读存储器320、永久存储装置325、输入装置接口330、输出装置接口335和网络接口340。
总线305共同地表示通信地连接电子系统300的多个内部装置的所有系统、外围设备和芯片组总线。例如,总线305将处理器310与只读存储器320、系统存储器315和永久存储装置325通信地连接。
从这各种存储器单元,处理器310获取要执行的指令和要处理的数据,以执行主题技术的过程。处理器可包括不同实现方式中的单个处理器或多核处理器。
只读存储器(ROM)320存储处理器310和电子系统的其他模块所需的静态数据和指令。另一方面,永久存储装置325是读写存储装置。该装置是即使当电子系统300关闭时也存储指令和数据的非易失性存储器单元。主题技术的一些实现方式使用大容量存储装置(例如,磁盘或光盘及其对应的盘驱动器)作为永久存储装置325。
其他实现方式使用可移除存储装置(例如,软盘、闪存驱动及其对应的盘驱动器)作为永久存储装置325。如同永久存储装置325,系统存储器315是读写存储器装置。然而,与存储装置325不同,系统存储器315是诸如随机存取存储器的易失性读写存储器。系统存储器315存储处理器在运行时需要的指令和数据中的一些。在一些实现方式中,主题技术的过程被存储在系统存储器315、永久存储设备325或只读存储器320中。例如,按照一些实现方式,各种存储器单元包括用于共享对象层级上的二进制转换的指令。从这各种存储器单元,处理器310获取要执行的指令和要处理的数据,以执行一些实现方式的处理。
总线305还连接到输入装置接口330和输出装置接口335。输入装置接口330使用户能够向电子系统传送信息和选择命令。与输入装置接口330一起使用的输入装置包括例如字母数字键盘和指示装置(也称为“光标控制装置”)。输出装置接口335例如使得能够显示由电子系统300生成的图像。与输出装置接口335一起使用的输出装置包括例如打印机和显示装置,例如,阴极射线管(CRT)或液晶显示器(LCD)。一些实现方式包括例如兼做输入和输出装置的触摸屏的装置。
最后,如图3所示,总线305还通过网络接口340将电子系统300耦合到网络(未示出)。以这种方式,电子系统300可以成为计算机网络的部分(例如,局域网(LAN)、广域网(WAN)或内联网或网络的网络,例如,互联网)。电子系统300的任何或所有组件可与主题技术结合进行使用。
上述特征和应用可被实现为被指定为记录在计算机可读存储介质(也被称为计算机可读介质)上的指令集合的软件过程。当这些指令由一个或多个处理器(其可包括例如一个或多个处理器、处理器的核或其他处理单元)执行时,它们致使处理器执行指令中指示的动作。计算机可读介质的示例包括但不限于CD-ROM、闪存驱动器、RAM芯片、硬盘驱动器、EPROM等。计算机可读介质不包括通过无线或有线连接的载波和电子信号。
在本说明书中,术语“软件”意在包括驻留在只读存储器中的固件或存储在磁存储或闪存存储(例如,固态驱动器)中的应用,其可被读入存储器,供处理器处理。此外,在一些实现方式中,多种软件技术可被实现为较大程序的子部分,同时保持不同的软件技术。在一些实现方式中,多种软件技术也可被实现为单独的程序。最后,在一起实现这里描述的软件技术的单独程序的任何组合都在主题技术的范围内。在一些实现方式中,软件程序在被安装为在一个或多个电子系统上操作时,定义执行和履行软件程序的操作的一个或多个特定机器实现方式。
可用任何形式的编程语言(包括编译或解释语言、声明或过程语言)来编写计算机程序(也被称为程序、软件、软件应用、脚本或代码),并且可用任何形式来部署该计算机程序,包括将其部署为独立程序或适用于计算环境中的模块、组件、子例程、对象或其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序可被存储在文件中保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的一部分中、专用于所讨论程序的单个文件中或者多个协调文件中(例如,存储一个或多个模块、子程序或代码中的一些部分的文件)。可将计算机程序部署为在一个计算机上或位于一个站点上或分布在多个站点上并由通信网络互连的多个计算机上执行。
上述功能可用数字电子电路、计算机软件、固件或硬件来实现。可使用一个或多个计算机程序产品来实现这些技术。可编程的处理器和计算机可被包括在移动装置中或被封装为移动装置。进程和逻辑流可由一个或多个可编程处理器和一个或多个可编程逻辑电路执行。通用和专用的计算装置和存储装置可通过通信网络互连。
一些实现方式包括电子组件,例如,将计算机程序指令存储在机器可读或计算机可读介质中的微处理器、存储器和存储器(替选地称为计算机可读存储介质、机器可读介质或机器可读存储介质)。此计算机可读介质的一些示例包括RAM、ROM、只读光盘(CD-ROM)、可记录压缩盘(CD-R)、可重写压缩盘(CD-RW)、只读数字通用盘(例如,DVD-ROM,双层DVD-ROM)、各种可记录/可重写DVD(例如,DVD-RAM,DVD-RW,DVD+RW等)、闪存存储器(例如,SD卡、mini-SD卡、微型SD卡等)、磁性或固态硬驱动器、只读和可记录的
Figure GDA0002835314990000191
盘、超密度光盘、任何其他光学或磁性介质和软盘。计算机可读介质可存储可由至少一个处理器执行的计算机程序并且包括用于执行各种操作的指令集。计算机程序或计算机代码的示例包括例如由编译器生成的机器代码以及包括使用解释器的计算机、电子部件或微处理器执行的更高级代码的文件。
虽然以上讨论主要涉及执行软件的微处理器或多核处理器,但一些实现方式由一个或多个集成电路(例如,专用集成电路(ASIC)或现场可编程门阵列(FPGA))执行。在一些实现方式中,这些集成电路执行存储在电路本身上的指令。
如本说明书和本申请的任何权利要求书所使用的,术语“计算机”、“服务器”、“处理器”和“存储器”均指电子或其他技术装置。这些术语不包括人或人群。出于说明的目的,术语“显示”或其变型意指在电子装置上显示。如本说明书和本申请的任何权利要求书所使用的,术语“一个计算机可读介质”和“多个计算机可读介质”完全限于以计算机可读形式存储信息的有形物理对象。这些术语排除了任何无线信号、有线下载信号和任何其他短暂信号。
为了提供与用户的交互,本说明书中描述的主题的实现方式可在具有向用户显示信息的显示装置(例如,阴极射线管(CRT)或液晶显示器(LCD)监视器)以及键盘和指示装置(例如,鼠标或轨迹球)的计算机上实现,用户能用键盘和指示装置向计算机提供输入。也可使用其他类型的装置来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;可从用户接收任何形式的输入(包括声音、语音或触觉输入)。另外,计算机可通过向用户使用的装置发送文档并从其接收文档(例如,通过响应于从网络浏览器接收到的请求,将网页发送到用户客户端装置上的web浏览器)来与用户进行交互。
本说明书中描述的主题可在包括后端组件(例如,作为数据服务器)或包括中间件组件(例如,应用服务器)或包括前端组件(例如,具有用户可通过其与本说明书中描述的主题的实现方式交互的图形用户界面或web浏览器的客户端计算机)或此类后端组件、中间件组件或前端组件的任何组合的计算机中实现。可通过任何形式或介质的数字数据通信(例如,通信网络)来将系统中的组件互连。通信网络的示例包括局域网(LAN)和广域网(WAN)、互联网络(例如,互联网)和对等网络(例如,自组织对等网络)。
计算系统可包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是由计算机程序在相应计算机上运行并且彼此具有客户端-服务器关系而产生的。在所公开主题的一些方面,服务器将数据(例如,HTML页面)发送到客户端装置(例如,出于向与客户端装置交互的用户显示数据并且从用户接收用户输入的目的)。可在服务器处从客户端装置接收在客户端装置处生成的数据(例如,用户交互的结果)。
要理解,所公开过程中的步骤的任何具体次序或层级都是示例性方法的图示。基于设计偏好,要理解,可重新排列过程中的步骤的特定次序或层级,或者执行所有图示的步骤。一些步骤可同时执行。例如,在某些情况下,多任务和并行处理可能是有利的。此外,以上图示的各种系统组件的分立不应该被理解为需要进行这种分立,并且应该理解,所描述的程序组件和系统可总体被一起集成在单个软件产品中或者被封装到多个软件产品中。
对这些方面的各种修改将容易是显而易见的,并且本文中定义的一般原理可以应用于其他方面。因此,权利要求书不旨在限于本文中示出的方面,而是被赋予与权利要求书语言一致的全部范围,其中,提及单数形式的要素并不意味着“有且只有一个”(除非具体如此陈述),而是意味着“一个或多个”。除非另有具体说明,否则术语“一些”是指一个或多个。男性代词(例如,他的)包括女性和中性性别(例如,她的和它的),反之亦然。标题和副标题(如果有的话)仅仅是出于方便起见而使用的,并不限制主题技术。
短语例如“方面”并不意味着该方面对于主题技术是至关重要的或者该方面适用于主题技术的所有配置。与一方面相关的公开可应用于所有配置或一个或多个配置。短语(例如,一方面)可以指一个或多个方面,反之亦然。短语例如“配置”并不意味着该配置对于主题技术是至关重要的或者该配置适用于主题技术的所有配置。与配置相关的公开可应用于所有配置或一个或多个配置。短语(例如,配置)可以指一个或多个配置,反之亦然。

Claims (18)

1.一种用于二进制转换的计算机实现的方法,包括:
在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序,其中所述软件程序使用与所述客户机平台相关联的共享对象或动态加载库的集合,并且其中所述软件程序和所述共享对象或动态加载库的集合与所述主机平台不兼容;
在所述主机平台内对所述指定客户机平台进行仿真;
确定所述主机平台是否具有没有进行二进制转换的对应共享对象或动态加载库,但是实现与来自所述共享对象或动态加载库的集合内的指定的共享对象或动态加载库公共的外部接口;
如果所述主机平台具有所述对应共享对象或动态加载库,则基于将所述软件程序中的一个或多个链接修改为指向所述对应共享对象或动态加载库的链接来使用所述对应共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行,避免所述指定的共享对象或动态加载库的二进制转换,其中,所述公共的外部接口与所述指定的共享对象或动态加载库实现相似或相同的函数调用以及响应于函数调用的相似或相同的行为;以及
如果所述主机平台没有所述对应共享对象或动态加载库,则执行所述指定的共享对象或动态加载库的二进制转换,以供所述主机平台内的所述软件程序的执行。
2.根据权利要求1所述的方法,其中,执行所述指定的共享对象或动态加载库的所述二进制转换包括创建第一二进制转换对象,其中所述第一二进制转换对象的外部接口包括对用于所述主机平台的第二二进制转换对象或对最初用于所述主机平台的对象的函数调用。
3.根据权利要求1所述的方法,其中,所述共享对象或动态加载库的集合包括与所述主机平台处的所述对应共享对象或动态加载库关联的至少一个系统库和不与所述主机平台处的所述对应共享对象或动态加载库关联的至少一个供应商库。
4.根据权利要求1所述的方法,其中,所述指定客户机平台包括ARM硬件,并且其中,所述主机平台包括x86硬件。
5.根据权利要求1所述的方法,其中,使用所述对应共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行包括:
提供桥接器,使得对所述指定的共享对象或动态加载库的调用被变换成对所述对应共享对象或动态加载库的调用。
6.根据权利要求1所述的方法,进一步包括:
接收需要访问被仿真的客户机平台的状态或所述主机平台的状态的调用;以及
响应于所述调用,将所仿真的客户机平台的状态与所述主机平台的状态同步。
7.一种非瞬时计算机可读介质,所述非瞬时计算机可读介质包括指令,所述指令在由一个或多个计算机执行时致使所述一个或多个计算机实现一种方法,所述方法包括:
在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序,其中所述软件程序使用与所述客户机平台相关联的共享对象或动态加载库的集合,并且其中所述软件程序和所述共享对象或动态加载库的集合与所述主机平台不兼容;
确定所述主机平台是否具有没有进行二进制转换的对应共享对象或动态加载库,但是实现与来自所述共享对象或动态加载库的集合内的指定的共享对象或动态加载库公共的外部接口;
如果所述主机平台具有所述对应共享对象或动态加载库,则基于将所述软件程序中的一个或多个链接修改为指向所述对应共享对象或动态加载库的链接来使用所述对应共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行,避免所述指定的共享对象或动态加载库的二进制转换,其中,所述公共的外部接口与所述指定的共享对象或动态加载库实现相似或相同的函数调用以及响应于函数调用的相似或相同的行为;以及
如果所述主机平台没有所述对应共享对象或动态加载库,则执行所述指定的共享对象或动态加载库的二进制转换,以供所述主机平台内的所述软件程序的执行。
8.根据权利要求7所述的非瞬时计算机可读介质,其中,执行所述指定的共享对象或动态加载库的所述二进制转换包括创建第一二进制转换对象,其中所述第一二进制转换对象的外部接口包括对用于所述主机平台的第二二进制转换对象或对最初用于所述主机平台的对象的函数调用。
9.根据权利要求7所述的非瞬时计算机可读介质,其中,所述共享对象或动态加载库的集合包括与所述主机平台处的所述对应共享对象或动态加载库关联的至少一个系统库和不与所述主机平台处的所述对应共享对象或动态加载库关联的至少一个供应商库。
10.根据权利要求7所述的非瞬时计算机可读介质,其中,所述指定客户机平台包括ARM硬件,并且其中,所述主机平台包括x86硬件。
11.根据权利要求7所述的非瞬时计算机可读介质,其中,使用所述对应共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行包括:
提供桥接器,使得对所述指定的共享对象或动态加载库的调用被变换成对所述对应共享对象或动态加载库的调用。
12.根据权利要求7所述的非瞬时计算机可读介质,所述方法进一步包括:
在所述主机平台内对所述指定客户机平台进行仿真。
13.根据权利要求12所述的非瞬时计算机可读介质,所述方法进一步包括:
接收需要访问被仿真的客户机平台的状态或所述主机平台的状态的调用;以及
响应于所述调用,将所仿真的客户机平台的状态与所述主机平台的状态同步。
14.一种用于二进制转换的系统,包括:
一个或多个处理器;以及
存储器,其包括指令,所述指令在由所述一个或多个处理器执行时致使所述一个或多个处理器实现一种方法,所述方法包括:
在主机平台处接收为与所述主机平台不同的指定客户机平台编写的软件程序,其中所述软件程序使用与所述客户机平台相关联的共享对象或动态加载库的集合,并且其中所述软件程序和所述共享对象或动态加载库的集合与所述主机平台不兼容;
在所述主机平台内对所述指定客户机平台进行仿真;
确定所述主机平台是否具有没有进行二进制转换的对应共享对象或动态加载库,但是实现与来自所述共享对象或动态加载库的集合内的指定的共享对象或动态加载库公共的外部接口;
如果所述主机平台具有所述对应共享对象或动态加载库,则通过将所述软件程序中的链接动态地修改为指向取代所述指定的共享对象或动态加载库的所述对应共享对象或动态加载库的链接来使用所述对应共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行,避免所述指定的共享对象或动态加载库的二进制转换,其中,所述公共的外部接口与所述指定的共享对象或动态加载库实现相似或相同的函数调用以及响应于函数调用的相似或相同的行为;以及
如果所述主机平台没有所述对应共享对象或动态加载库,则执行所述指定的共享对象或动态加载库的二进制转换,以供所述主机平台内的所述软件程序的执行。
15.根据权利要求14所述的系统,其中,所述共享对象或动态加载库的集合包括与所述主机平台处的所述对应共享对象或动态加载库关联的至少一个系统库和不与所述主机平台处的所述对应共享对象或动态加载库关联的至少一个供应商库。
16.根据权利要求14所述的系统,其中,所述指定客户机平台包括ARM硬件,并且其中,所述主机平台包括x86硬件。
17.根据权利要求14所述的系统,其中,使用所述对应共享对象或动态加载库取代所述指定的共享对象或动态加载库以供所述主机平台内的所述软件程序的执行包括:
提供桥接器,使得对所述指定的共享对象或动态加载库的调用被变换成对所述对应共享对象或动态加载库的调用。
18.根据权利要求14所述的系统,所述方法进一步包括:
接收需要访问被仿真的客户机平台的状态或所述主机平台的状态的调用;以及
响应于所述调用,将所仿真的客户机平台的状态与所述主机平台的状态同步。
CN201580078239.3A 2015-04-10 2015-04-10 共享对象层级上的二进制转换的方法、系统和介质 Active CN107408052B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2015/000937 WO2016162721A1 (en) 2015-04-10 2015-04-10 Binary translation on shared object level

Publications (2)

Publication Number Publication Date
CN107408052A CN107408052A (zh) 2017-11-28
CN107408052B true CN107408052B (zh) 2021-04-16

Family

ID=57071905

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580078239.3A Active CN107408052B (zh) 2015-04-10 2015-04-10 共享对象层级上的二进制转换的方法、系统和介质

Country Status (8)

Country Link
US (1) US10007497B2 (zh)
EP (1) EP3259664B1 (zh)
JP (1) JP6559793B2 (zh)
KR (1) KR102023668B1 (zh)
CN (1) CN107408052B (zh)
DE (1) DE112015006436T5 (zh)
GB (1) GB2554553B (zh)
WO (1) WO2016162721A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107710160B (zh) * 2015-07-08 2021-06-22 株式会社日立制作所 计算机和存储区域管理方法
US10355945B2 (en) 2016-09-21 2019-07-16 International Business Machines Corporation Service level management of a workload defined environment
US10599479B2 (en) 2016-09-21 2020-03-24 International Business Machines Corporation Resource sharing management of a field programmable device
US10572310B2 (en) 2016-09-21 2020-02-25 International Business Machines Corporation Deploying and utilizing a software library and corresponding field programmable device binary
US9996334B2 (en) * 2016-09-21 2018-06-12 International Business Machines Corporation Deploying and utilizing a software library and corresponding field programmable device binary
US10417012B2 (en) 2016-09-21 2019-09-17 International Business Machines Corporation Reprogramming a field programmable device on-demand
US10354690B2 (en) * 2016-12-19 2019-07-16 Modulus Media Systems, Inc. Method for capturing and recording high-definition video and audio output as broadcast by commercial streaming service providers
US10152313B1 (en) * 2017-12-19 2018-12-11 International Business Machines Corporation Shared library transformation on the same architecture
US11709670B2 (en) * 2020-04-14 2023-07-25 Advanced Micro Devices, Inc. Identifying and configuring compatible versions of runtime components by shared libraries
CN112114778B (zh) * 2020-07-03 2024-04-02 上海金融期货信息技术有限公司 一种支持水平扩展的跨平台动态库算法管理系统
CN111858778B (zh) * 2020-08-18 2023-11-10 天津速越科技有限公司 基于蓝牙ic卡的服务器端数据读写方法及动态库使能器
US11675593B2 (en) * 2021-08-31 2023-06-13 International Business Machines Corporation Dynamically updating a dynamic library
US20230266984A1 (en) * 2022-02-23 2023-08-24 Red Hat, Inc. Container-based operating system translation
US11900087B1 (en) * 2022-03-23 2024-02-13 Amazon Technologies, Inc. Application binary replatforming as a service

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1892602A (zh) * 2005-07-01 2007-01-10 中国科学院计算技术研究所 一种二进制翻译中库函数调用的处理方法

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
JP4130713B2 (ja) * 1998-10-21 2008-08-06 松下電器産業株式会社 プログラム変換装置
US20020046305A1 (en) * 1999-02-17 2002-04-18 Babaian Boris A. Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7496494B2 (en) * 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US7434209B2 (en) * 2003-07-15 2008-10-07 Transitive Limited Method and apparatus for performing native binding to execute native code
GB0316531D0 (en) * 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for performing native binding
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code
US8214622B2 (en) * 2004-05-27 2012-07-03 International Business Machines Corporation Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment
JP2006244009A (ja) * 2005-03-02 2006-09-14 Seiko Epson Corp ダウンロードシステム、サーバ装置およびドライバ提供方法
US7496495B2 (en) * 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US20070006178A1 (en) * 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
US20070016895A1 (en) * 2005-07-15 2007-01-18 Microsoft Corporation Selective omission of endian translation to enhance emulator performance
US8572606B1 (en) * 2005-12-29 2013-10-29 Vmware, Inc. System and method for avoiding synchronization bugs through virtualization
KR100810268B1 (ko) * 2006-04-06 2008-03-06 삼성전자주식회사 모바일 디스플레이 장치에서의 색약자를 위한 구현 방법
US20160344745A1 (en) * 2006-09-25 2016-11-24 Weaved, Inc. Method and protocol for secure device deployment using a partially-encrypted provisioning file
US20150088982A1 (en) 2006-09-25 2015-03-26 Weaved, Inc. Load balanced inter-device messaging
GB2442495B (en) * 2006-10-02 2009-04-01 Transitive Ltd Method and apparatus for handling dynamically linked function cells with respect to program code conversion
US8166492B2 (en) * 2007-04-10 2012-04-24 Microsoft Corporation Application compatibility using a hybrid environment
US8561061B2 (en) * 2007-05-14 2013-10-15 Vmware, Inc. Adaptive dynamic selection and application of multiple virtualization techniques
US8607013B2 (en) * 2007-10-30 2013-12-10 Vmware, Inc. Providing VMM access to guest virtual memory
US9740637B2 (en) * 2007-10-30 2017-08-22 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US8176280B2 (en) * 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8086811B2 (en) * 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8095773B2 (en) * 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US20090271172A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporation Emulating A Computer Run Time Environment
US8346531B2 (en) * 2008-11-05 2013-01-01 Oracle America, Inc. Handling mutex locks in a dynamic binary translation across heterogeneous computer systems
CN101482851B (zh) * 2008-12-31 2011-02-16 中国科学院计算技术研究所 二进制翻译器中线程共享目标本地码缓存替换方法及系统
US8738932B2 (en) * 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US20100262722A1 (en) * 2009-04-10 2010-10-14 Christophe Vauthier Dynamic Assignment of Graphics Processing Unit to a Virtual Machine
US9766911B2 (en) * 2009-04-24 2017-09-19 Oracle America, Inc. Support for a non-native application
US8479176B2 (en) * 2010-06-14 2013-07-02 Intel Corporation Register mapping techniques for efficient dynamic binary translation
US8595469B2 (en) * 2010-06-24 2013-11-26 International Business Machines Corporation Diagnose instruction for serializing processing
CN107608755A (zh) * 2010-07-01 2018-01-19 纽戴纳公司 为了优化群集特定配置的使用而按进程类型在群集之间分割进程
CN102141929B (zh) * 2010-10-21 2014-05-07 华为技术有限公司 应用程序的运行方法、模拟器、宿主机及系统
US9600429B2 (en) * 2010-12-09 2017-03-21 Solarflare Communications, Inc. Encapsulated accelerator
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9495183B2 (en) * 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9098309B2 (en) * 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
US9329887B2 (en) * 2011-10-19 2016-05-03 Hob Gmbh & Co. Kg System and method for controlling multiple computer peripheral devices using a generic driver
US8819648B2 (en) * 2012-07-20 2014-08-26 International Business Machines Corporation Control flow management for execution of dynamically translated non-native code in a virtual hosting environment
US8812873B2 (en) * 2012-09-26 2014-08-19 Intel Corporation Secure execution of a computer program using binary translators
US9405551B2 (en) * 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
WO2014155684A1 (ja) * 2013-03-29 2014-10-02 富士通株式会社 プログラム、情報処理システム、およびプログラム移行方法
US9658867B2 (en) * 2013-05-30 2017-05-23 Hewlett Packard Enterprise Development Lp Preserving object code translations of a library for future reuse by an emulator
US9983894B2 (en) * 2013-09-25 2018-05-29 Facebook, Inc. Method and system for providing secure system execution on hardware supporting secure application execution
CN103885814B (zh) * 2014-03-20 2017-05-17 百度在线网络技术(北京)有限公司 在x86架构上运行ARM APK的模拟器装置和方法
US20150355946A1 (en) * 2014-06-10 2015-12-10 Dan-Chyi Kang “Systems of System” and method for Virtualization and Cloud Computing System
US20150379169A1 (en) * 2014-06-27 2015-12-31 Yong Wu Efficient emulation for pseudo-wrapped callback handling in binary translation software

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1892602A (zh) * 2005-07-01 2007-01-10 中国科学院计算技术研究所 一种二进制翻译中库函数调用的处理方法

Also Published As

Publication number Publication date
EP3259664A4 (en) 2018-12-05
EP3259664A1 (en) 2017-12-27
DE112015006436T5 (de) 2018-01-04
GB201714961D0 (en) 2017-11-01
WO2016162721A1 (en) 2016-10-13
US10007497B2 (en) 2018-06-26
WO2016162721A8 (en) 2016-12-15
GB2554553B (en) 2021-12-01
KR102023668B1 (ko) 2019-09-20
US20170039050A1 (en) 2017-02-09
JP2018508083A (ja) 2018-03-22
CN107408052A (zh) 2017-11-28
EP3259664B1 (en) 2022-07-06
JP6559793B2 (ja) 2019-08-14
KR20170130447A (ko) 2017-11-28
GB2554553A (en) 2018-04-04

Similar Documents

Publication Publication Date Title
CN107408052B (zh) 共享对象层级上的二进制转换的方法、系统和介质
US9910833B2 (en) Automatically rendering web and/or hybrid applications natively in parallel
US20160085604A1 (en) Dynamic method invocation via proxy framework
CN107408053B (zh) 用于到本原客户端的二进制翻译的方法、系统和介质
US20110010724A1 (en) Communication bridge
Taivalsaari et al. The web as a software platform: Ten years later
US11720335B2 (en) Hybrid binaries supporting code stream folding
EP3752914B1 (en) Techniques for native runtime of hypertext markup language graphics content
Billah et al. Sinter: Low-bandwidth remote access for the visually-impaired
US10579373B2 (en) Seamless extension porting
US11403100B2 (en) Dual architecture function pointers having consistent reference addresses
US11042422B1 (en) Hybrid binaries supporting code stream folding
US11947860B2 (en) Mapping incompatible windowing topographies across operating systems
US20240020133A1 (en) Systems and methods to bridge platforms
Tijms Binary translation: Classification of emulators
Peter et al. Transforming a bare PC application to run on an ARM device
Kim et al. Concepts and practical considerations of platform-independent design of mobile music environments
KR20220027027A (ko) 하드웨어 설계들을 위한 타깃 코드를 개발하고 테스트하기 위한 가상 머신

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

GR01 Patent grant
GR01 Patent grant