包含对重写虚拟函数的调用的支持的isa桥接的制作方法

文档序号:6494484阅读:158来源:国知局
包含对重写虚拟函数的调用的支持的isa桥接的制作方法
【专利摘要】公开了支持虚拟函数的与ISA桥接相关联的方法、装置和存储介质。在多个实施例中,至少一个计算机可读存储介质可包括指令,这些指令被配置成使具有目标ISA的目标设备响应于执行来向该目标设备提供ISA桥接层,以便于该目标设备的库的库服务调用该库的虚拟函数,同时给在该目标设备上运行的应用提供服务,其中该应用具有重写实现。该ISA桥接层可包括加载器,该加载器被配置成加载该应用以执行,并且作为加载该应用的一部分来检测该虚拟函数并修改该应用的虚拟函数表以实现该调用。公开和声明要求保护其它实施例。
【专利说明】包含对重写虚拟函数的调用的支持的ISA桥接
[0001]相关申请
[0002]本申请与2012年I月10日提交的名称为“ISA Bridging with Callback (具有回调的ISA桥接)”的PCT申请N0.:PCT/CN2012/070163在技术上相关。
[0003]发明背景
[0004]本申请中提供的背景描述是为了大概给出本公开内容的情境。除非本申请中另有指示,否则本章节中描述的材料对于本申请的权利要求而言并非现有技术,并且不因为包含在本章节中而被承认是现有技术。
[0005]计算设备可通过其指令集体系结构(ISA)来表征。典型地,计算设备可包括操作系统(OS)服务,且OS服务可包括针对计算设备的ISA开发的运行时间库服务(LIB),以便于应用开发者开发在该计算设备上运行的应用。例如,各种各样的智能手机可通过ARM处理器及其ISA的使用来表征。这些智能手机可包括OS,例如iOS或安卓(Android),用于支持针对相应智能手机开发的各种各样的应用。一些计算设备提供ISA无关的执行环境,诸如Java?或Android应用框架。然而,尽管如此,大量的应用包括ISA相关部分,这些ISA相关部分调用ISA相关运行时间库的服务。此外,这些ISA相关部分通常包括需要从ISA相关运行时间库回调的回调函数,并且此类回调通常直至运行时间才会被发现,致使诸如二进制转换之类的传统方法不足以解决这些需求。此外,这些ISA相关部分可能还包括当ISA相关运行时间库的可继承虚拟函数被调用时对需要被正确调用的这些虚拟函数的重写实现。诸如二进制转换之类的传统方法同样不足以解决这些需求。
[0006]附图简述
[0007]将通过附图中示出但并非作为限制的示例性实施例来描述本发明的实施例,在附图中相似的附图标记表示相似的要素,而且在附图中:
[0008]图1示出包含有具有回调和虚拟函数支持的ISA桥接的示例计算设备;
[0009]图2更详细地示出图1的ISA桥接层;
[0010]图3和4示出用于桥接源ISA的应用与目标ISA的库服务之间的调用和回调的方法;以及
[0011]图5示出具有被配置成实现图3和4的方法的所有或选择方面的指令的示例非瞬态计算机可读存储介质;所有指令根据本公开内容的实施例来设置。
【具体实施方式】
[0012]公开了与具有回调和虚拟函数支持的ISA桥接相关联的方法、装置和存储介质。在多个实施例中,至少一个计算机可读存储介质可包括指令,这些指令被配置成使具有目标ISA的目标设备响应于指令的执行来向该目标设备提供ISA桥接层,以便于该目标设备的库的库服务调用该库的虚拟函数,同时给应用提供服务。该库服务可针对该目标ISA实现,而且该应用可至少部分地针对可能与该目标ISA不同的源ISA实现,且包括具有对虚拟函数的重写实现的类。ISA桥接层可包括加载器,该加载器配置成:加载该应用以执行,并且(作为加载的一部分)检测该虚拟函数并修改该应用的虚拟函数表,以使得执行控制能响应于调用横跨源和目标指令集体系结构被转移至虚拟函数的重写实现。在多个实施例中,ISA桥接层还可包括源ISA仿真器和库仿真器,源ISA仿真器和库仿真器被配置成相互协作,以实现横跨多个ISA的响应于该调用的执行控制转移、并且使应用能调用库服务、以及使库服务能回调回调函数。
[0013]将利用本领域普通技术人员所通常采用的术语来描述说明性实施例的各个方面,以将他们工作的实质内容传递给本领域的其它技术人员。然而,本领域普通技术人员将明了,仅利用所描述方面中的一些也可实现替代实施例。为了说明目的,陈述了特定数量、材料以及配置以提供对说明性实施例的透彻理解。然而,本领域技术人员将明了,在没有这些具体细节的情况下也可实现替代实施例。在其它实例中,忽略或简化了公知的特征以不弄混说明性实施例。
[0014]进而,多个操作将被描述为多个分立的操作以最好地帮助理解说明性实施例;然而,描述顺序不应当被理解为暗示这些操作一定是顺序相关的。具体而言,这些操作不需要按照所呈现的顺序来执行。此外,将操作描述为分别的操作不应被理解为要求这些操作一定独立地执行和/或由不同的实体执行。将这些实体和/或模块描述为分别的模块同样不应被理解为要求这些模块是分别的和/或执行不同的操作。在多个实施例中,所示和/或所描述的操作、实体、数据和/或模块可合并、分解为更多的子部件和/或被省略。
[0015]短语“在一个实施例中”或“在实施例中”被重复地使用。该短语通常不指代同一实施例;然而,它也可以指代同一实施例。术语“包括”、“具有”以及“包含”是同义的,除非上下文另作规定。短语“A/B”表示“A或B”。短语“A和/或B”表示“(A)、(B)或(A和B)”。短语“A、B和C中的至少一个”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B 和 C)。
[0016]图1示出根据本公开内容的多个实施例的包含有具有回调和虚拟函数支持的ISA桥接的示例计算设备。如图所示,对于所示实施例,计算设备102可包括如图所示彼此耦合的:处理器和存储器布置104,被配置成使操作系统(OS) 122、ISA桥接层123以及应用120在其中运行;图形处理单元(GPU)106、显示单元108以及联网接口 110。0S122可包括服务库124。此外,计算设备102还可包括应用120与0S122之间的可选的中间件121。如将在下文中更详细描述地,ISA桥接层123可被配置成具有多个应用加载和运行时间特征或服务(包括但不限于例如动态绑定)以使应用120能完全地或部分地在源ISA中实现(例如当也使用ISA无关中间件121时),同时0S122 (包括库服务124)可在与源ISA不同的目标ISA中实现。此外,应用120可以是包括库服务124的使用特征的应用(具体而言,利用源ISA实现的该部分),库服务124的使用特征在多种条件下要求库服务124中的多个回调应用120的多个回调函数125。
[0017]在多个实施例中,应用120可以是目标导向的或包括类126。对于这些实施例,应用120可包括对象/类126,这些对象/类126具有从目标ISA库服务124继承的虚拟函数的一个或多个重写实现127。此外,应用120可包括一个或多个虚拟函数表129,用于存储从目标ISA库服务124继承的虚拟函数的这些重写实现127(下文中简称为重写实现127)。一个或多个虚拟函数表129还可包括描述重写实现127的相关联的元数据。在多个实施例中,应用120还可包括重定位表131,该重定位表131包含便于对在编译时间未解析的部分的运行时间解析的符号名和其它信息。[0018]在多个实施例中,ISA桥接层123可包括如下支持:当库服务124中的多个库服务调用虚拟函数时,使执行控制能横跨不同ISA正确地转移至这些重写实现127。下文将进一步描述ISA桥接层123的多个实施例。ISA桥接层123也可被称为进程虚拟机(PVM)。
[0019]计算机设备102可以是服务器、桌面计算机、膝上型计算机、平板计算机、智能手机、个人数字助理、游戏控制台、因特网设备或类似的其它计算设备。计算设备102的示例可包括但不限于可从美国加利福尼亚州帕洛阿尔托市的惠普公司获得的服务器、可从美国德克萨斯州奥斯汀市的戴尔计算机公司获得的桌面或膝上型计算机、可从美国加利福尼亚州库比蒂诺市的苹果计算机公司获得的智能手机和计算平板计算机、可从日本东京市的任天堂公司获得的游戏控制台等等。
[0020]处理器和存储器布置104旨在表示广泛的处理器和存储器布置,包括但不限于具有不同执行速度和功耗的单核和多核处理器以及具有一级或多级不同类型的高速缓存(诸如动态随机存取、闪存等等)的多种体系结构的存储器的布置。在多个实施例中,GPU106可被配置成向0S122提供视频解码和/或图形处理功能,同时显示单元108可被配置成允许在其上渲染多媒体内容(例如HD视频)。类似地,GPU106和显示单元108旨在表示本领域已知的广泛的图形处理器和显示元件。同样,网络134旨在表示本领域已知的广泛的网络。网络134的示例可包括有线或无线、局域或广域、私有或公共网络,包括因特网。
[0021]除了限定库服务124的调用的应用编程接口(API)之外,0S122 (包括库服务124)旨在表示本领域已知的广泛的操作系统元件。0S122可包括常规组件,诸如被配置成管理存储器资源、调度任务执行等等的内核以及被配置成管理多个设备资源的设备驱动程序。在多个实施例中,0S122可包括支持中间件121 (如果采用)的虚拟机,例如支持Android应用框架的Android虚拟机。对于这些实施例,除了限定库服务124的调用之外,为了便于调用应用120的回调函数125,库服务124的API还可包括应用120的回调函数125的相应的存根和签名。0S122的示例可包括但不限于可从华盛顿州雷蒙德市的微软公司获得的Windows?操作系统、可从美国北卡罗来纳州雷利市的Red Hat?公司获得的Linux、由开放手持设备联盟开发的Android?、或可从加利福尼亚州库比蒂诺市的苹果?计算机公司获得的iOS。
[0022]类似地,中间件121旨在表示本领域已知的广泛的中间件元件,包括但不限于ISA无关的中间件。中间件121的示例可包括但不限于Android应用框架、Java?或其它应用框架或ISA无关执行环境。
[0023]同样,应用120 (包括回调函数125、重写实现127等等)旨在表示本领域已知的广泛的应用。应用120的示例可包括但不限于个人助理、生产力或社交联网应用,诸如日历、文字处理、电子数据表、推特(Twitter)、脸谱(Facebook)等等,或诸如浏览器之类的一般应用代理。浏览器的示例可包括但不限于可从美国华盛顿州雷蒙德市的微软公司获得的IE浏览器、或可从美国加利福尼亚州的山景城的Mozilla公司获得的Firefox。
[0024]现参考图2,其中示出根据本公开内容的多个实施例的示例ISA桥接层123。如图所示,对于这些实施例,ISA桥接层123可包括ISA桥接加载器202、源ISA仿真器204和目标ISA库仿真器206 (下文中简称为LIB仿真器),配置成提供包括但不限于动态绑定服务的多种运行时间特征和服务。源ISA仿真器204可包括源ISA上下文212和二进制转换引擎215。源ISA仿真器204可在源ISA上下文212中保持源ISA体系结构的执行上下文,包括但不限于例如当前执行指令指针(IP)。二进制转换器引擎215可被配置成将源ISA指令转换成目标ISA指令。LIB仿真器206可包括目标ISA库(LIB)上下文222、门(gate) 224和包装器函数226。LIB仿真器206可在目标ISA库(LIB)上下文222中保持目标ISA库的执行上下文。在多个实施例中,还可存在每个库服务124的相应的一对门224和包装器函数226,被配置成便于应用120横跨源和目标ISA体系结构对库服务124的调用。类似地,可能存在每个回调函数125和每个重写实现127的相应的一对门224和包装器函数226,被配置成在虚拟函数被调用时便于库服务124横跨目标和源ISA体系结构对回调函数125的回调以及执行控制横跨目标和源ISA体系结构转移至重写实现127。
[0025]ISA桥接加载器202可被配置成加载应用120。在加载应用120中,ISA桥接加载器202可被配置成将与进行调用的库服务相关联的应用120的任何未经解析的符号名解析成库服务124的适当的服务。在多个实施例中,ISA桥接加载器202可被配置成将与进行调用的库服务相关联的应用120的任何未经解析的符号名解析成库服务124的相应的门224的地址。此外,ISA桥接加载器202可被配置成将符号名或对回调函数125的引用修改为内部名称,并将符号名或对回调函数125的引用与相应的包装器函数226相关联。
[0026]此外,ISA桥接加载器202还可包括伪链接器函数,被配置成在加载应用120以供执行时解析多个重写实现127。在多个实施例中,ISA桥接加载器202可(作为加载的一部分)利用重定位表131中的信息来标识重写实现127。在多个实施例中,ISA桥接加载器202还可被配置成:当库服务124调用虚拟函数时,在需要时通过修改虚拟函数表129、利用相应的包装器函数替换虚拟函数表129中的条目使执行控制能横跨ISA转移至重写实现127。在多个实施例中,包装器函数可包括指向重写实现127的指针。
[0027]ISA桥接加载器202可按照多种已知方式中的任一种获得对从0S122的加载器(或中间件121,若采用)加载的控制。这样的已知方式的示例可包括使用基于二进制格式的控制转移或加载/预加载变量(当受到0S122或中间件121支持时)。在其它实施例中,OS 122的加载器(或中间件121,若采用)可被修改以便于控制替代地向ISA桥接加载器202的转移。
[0028]如之前所描述,源ISA仿真器204可被配置成保持源ISA执行上下文212。源ISA仿真器204可被配置成在应用120执行期间跟踪源ISA IP (指令指针)。当应用120试图调用库服务124时,监测源ISA执行的源ISA仿真器204可调用并替代地将执行控制转移至LIB仿真器206。在多个实施例中,源ISA仿真器204可调用并将执行控制转移至库服务器124的相应的门224。
[0029]LIB仿真器206可类似地被配置成保持目标ISA库(LIB)执行上下文222。
[0030]与库服务124相对应的门224可被配置成相应地将对库服务124的调用重定向至相应的包装器函数226以处理并建立这些调用。然而,与回调函数125或重写实现127相对应的门224可被配置成相应地将对虚拟函数的回调或调用的执行控制从相应的包装器函数226转移至源ISA仿真器204。在多个实施例中,每个门224可包括配置成实现向相应的包装器函数226或源ISA仿真器204的重定向的指令。在多个实施例中,每个门224的指令可以是源ISA指令,该源ISA指令被配置成与二进制转换引擎215协作以实现执行控制重定向。在多个实施例中,每个门224还可包括标识相应的包装器函数226的指示符。
[0031]在多个实施例中,为了处理和建立对相应库服务124的调用,与库服务124相对应的每个包装器函数226可被配置成从源ISA上下文212检索该调用的相关联的参数值、将该调用从源ISA应用二进制接口(ABI)格式转换成目标ISA ABI格式、并且将具有这些参数值的经转换的调用保存在LIB上下文222中。
[0032]在回调回调函数125时,或在调用被重写的虚拟函数时,可将执行控制转移至回调函数125的相应的包装器函数226或重写实现127。在多个实施例中,为了处理和建立对回调函数125的回调或将执行控制转移至应用120的重写实现127,与回调函数125或重写实现127相对应的每个包装器函数226可被配置成将对被重写的虚拟函数的回调或调用从目标ISA ABI格式转换成源ISA ABI格式、将该回调或调用的关联参数值附加至被重写的虚拟函数、以及将对具有这些参数值的被重写的虚拟函数的经转换的回调或调用保存在源ISA上下文212中。
[0033]与回调函数125或重写实现127相对应的门224可被配置成利用由与回调函数125或重写实现127相对应的包装器函数226准备的源ISA上下文来调用源ISA仿真器204,以在目标ISA上仿真以源ISA格式呈现的回调函数125或重写实现127。
[0034]现参考图3-4,其中示出根据本公开内容的多个实施例的具有回调和虚拟函数支持的示例ISA桥接方法。如图所示,方法300可包括两个部分,部分300a用于将来自(源ISA的)应用120的调用桥接至(目标ISA的)库服务124,并且部分300b用于将来自(目标ISA的)库服务124的回调桥接至(源ISA的)应用120的回调函数或将执行控制适当地转移至重写实现127。
[0035]部分300a可在框302开始。在框302,ISA桥接加载器202可加载应用120。在加载应用120中,ISA桥接加载器202可解析应用120的符号名或对库服务124的引用,并修改回调函数125的符号名或引用。此外,如先前描述地,ISA桥接加载器202可利用重定位表131检测/标识重写实现127,并修改虚拟函数表129。该过程在图6中进一步详细示出。
[0036]现参考图6,如图所示,过程600可在框602开始。在框602,加载器202可检索重定位表131中的当前条目。从框602,过程600可继续至框604。在框604,加载器202可确定所检索的条目中的修整(fix-up)地址是否属于虚拟函数表129。如果确定结果是肯定的,则过程600可继续至框606。在框606,加载器202可进一步确定该修整地址是否与虚拟函数相关联。如果确定结果是肯定的,则过程600可继续至框608。在框608,加载器202可进一步确定该虚拟函数是否已被重写。如果确定结果还是肯定的,则过程600可继续至框610。在框608,加载器202可使用相应的包装器函数来替换虚拟函数表129中的该条目,该相应的包装器函数包括指向重写实现127的指针。
[0037]如果在框604、606或608中的确定结果是否定的,则过程600可继续至框612。在框612,加载器202可确定重定位表131中的另一条目是否可用。如果确定结果是肯定的,则过程600可继续至框614。在框614,加载器202可移动至重定位表131中的下一条目。从框614,过程600可继续至框602,并重复之前描述的该过程。
[0038]如果在框612的确定结果是否定的,则过程600可结束。
[0039]现在返回参考图3,从框302,部分300a可继续至框304。在框304,在执行过程中,应用120可调用库服务124中的一个。在多个实施例中,应用120可通过所调用的库服务124来要求对其回调函数125中的一个的回调。在多个实施例中,应用120可包括指向将被回调的回调函数125的指针,作为对所调用的库服务124的调用的一部分。代替将该指针传递给回调函数125,库服务124的包装器函数226可传递回调函数125的相应的包装器函数 226。
[0040]对于一些调用,可将具有如之前描述那样修改的重写实现127和虚拟函数表129的对象/类126传递至具有库服务124的库。
[0041]从框304,部分300a可继续至框306。在框306,在通过例如检测源ISA IP并确定该IP引用目标库的地址范围内的地址而检测到调用时,源ISA仿真器204可重定向该调用,并将执行控制转移到LIB仿真器206中的库服务124的相应门224。从框306,部分300a可继续至框308。在框308,门224可进一步重定向该调用并将执行控制转移至所调用的库服务124的相应的包装器函数226。从框308,部分300a可继续至框310。在框310,所调用的库服务124的包装器函数226可处理该调用,并在LIB上下文222中建立该调用以供所调用的库服务124执行,如之前所描述。从框310,部分300a可继续至框312。在框312,所调用的库服务124的门224可从LIB上下文222收集该调用的返回值、更新源ISA上下文212、以及将执行控制转移至源ISA仿真器202,以将库服务调用的返回值返回至应用 125。
[0042]现在参考图4,部分300b可在框404开始。在框404,在所调用的库服务124的过程中或在完成时,库服务124可例如通过调用由应用120传递的回调指针或调用已被应用120的实现重写的库的虚拟函数,来回调应用120的回调函数125。从框404,部分300b可继续至框406,因为回调/调用指针是与回调函数125或重写实现127相对应的包装器函数226。在框406,可根据所修改的引用将执行控制转移至回调函数125或重写实现127的相应的包装器函数226。从框406,部分300b可继续至框408。在框408,包装器函数226可处理该回调/调用、在源ISA上下文212中建立该回调/调用以由应用120的回调函数125或重写实现127执行(如之前所描述)、并在之后将执行控制转移至回调函数125或重写实现127的相应门224。从框408,部分300b可继续至框410。在框410,与回调函数125或重写实现127相对应的门224可将回调/调用重定向并将执行控制转移至具有由包装器函数226准备的源ISA上下文的ISA仿真器。
[0043]此外,在框412,在通过例如监测源ISA IP并确定该IP引用与回调函数125或重写实现127相对应的门224的地址范围内的地址而检测到该调用时,源ISA仿真器204可将源ISA IP重定向到回调函数125或重写实现127以继续该仿真。从框412,部分300b可继续至框414。在框414,回调函数125或重写实现127的门224可从源ISA上下文212收集回调或调用的返回值、更新LIB上下文222、并将执行控制转移至LIB仿真器206以将回调函数125或重写实现127的返回值返回至库服务124。
[0044]图5示出根据本公开内容的多个实施例的具有被配置成实现图3和4的方法的所有或选择方面的指令的示例非瞬态计算机可读存储介质。如图所示,非瞬态计算机可读存储介质502可包括多个编程指令504。编程指令504可被配置成使计算设备(例如计算设备102)能够响应于编程指令的执行来执行之前参考图3和4所描述的方法300的ISA桥接操作的所有或选择方面。在替代实施例中,编程指令504可被设置在多个非瞬态计算机可读存储介质502上。
[0045]返回参考图1,对于一个实施例,处理器和存储器布置104的至少一个处理器可与被配置成实现图3和4的方法300的多个操作(或其子集)的ISA桥接层123的计算逻辑(或其子集)封装在一起。对于一个实施例,处理器和存储器布置104的至少一个处理器可与被配置成实现图3和4的方法300的多个操作(或其子集)的ISA桥接层123的计算逻辑(或其子集)封装在一起以形成封装中系统(SiP)。对于一个实施例,处理器和存储器布置104的至少一个处理器可与被配置成实现图3和4的方法300的多个操作(或其子集)的ISA桥接层123的计算逻辑(或其子集)一起集成在同一管芯上。对于一个实施例,处理器和存储器布置104的至少一个处理器可与被配置成实现图3和4的方法300的多个操作(或其子集)的ISA桥接层123的计算逻辑(或其子集)一起集成在同一管芯上以形成芯片上系统(SoC)。对于至少一个实施例,该SoC可在桌面计算机、膝上型计算机、智能手机、计算平板、因特网装置、个人数字助理(PDA)、便携式游戏设备、服务器或其他计算设备中使用。
[0046]仍参考图1,虽然为了便于理解,已在一个ISA桥接层123将一个源ISA桥接至一个目标ISA的情况下描述了本公开内容。然而,本发明并不受限于此。在多个实施例中,可提供多个不同ISA桥接层123以将多个不同的源ISA桥接至目标ISA。在这些实施例中的一些中,可附加地提供调度程序以检测所要求的桥接,并将一个或多个适当的ISA桥接层123实例化以提供所要求的ISA桥接。
[0047]此外,在多个实施例中,可利用针对(源ISA中)应用120的多个部分的(目标ISA中)替换的二进制代码来实现本公开内容,以减少所需的桥接量。在其他实施例中,用于桥接的一些资源(例如包装器函数的一些)可位于ISA桥接层123可访问的远程服务器上。
[0048]再者,虽然为了便于理解,已将ISA桥接层123描述为被配置成桥接不同的源ISA和目标ISA。然而,本公开内容并不受限于此。可构想,对于多个应用,可采用ISA桥接层123来桥接相同的源ISA和目标ISA。在这样的应用中,可能不需要所描述要素中的一个或多个(例如二进制转换引擎215)。此类应用的示例可以是向计算设备102提供增强的操作安全性。其他应用可类似地受益于这样的桥接操作。
[0049]因此,虽然在本申请中已经说明和描述了特定实施例,但本领域普通技术人员将理解,广泛的替代和/或等价实现方式可替代所示和所描述的特定实施例。
[0050]因此应理解,本公开内容可以是具有一个ISA并且支持针对另一 ISA开发的应用的计算设备的技术问题的解决方案,其中这些应用具有有时需要从所调用的库服务回调或调用具有该应用的重写实现的库的虚拟函数的使用特性。本公开内容的优势可包括但不限于避免在计算设备的ISA中完全转换或重新实现该应用。
[0051]还可理解,本公开内容可以是向计算设备提供增强的安全性的技术问题的解决方案。本公开内容的优势可包括但不限于所提供的隔离的强健性。
[0052]具体而言,所公开的内容包括但不限于具有指令的至少一个计算机可读存储介质,这些指令被配置成使具有目标指令集体系结构的目标设备能够响应于指令的执行来向该目标设备提供指令集体系结构桥接层,以便于该目标设备的库的库服务调用该库的虚拟函数,同时给在目标设备上运行的应用提供服务。该库服务可针对该目标指令集体系结构实现,而且该应用可至少部分地针对源指令集体系结构实现,且包括具有虚拟函数的重写实现的类。此外,该指令集体系结构桥接层可包括加载器,该加载器被配置成:加载该应用以执行,并且(作为加载该应用的一部分)检测该虚拟函数的重写实现并修改该类的虚拟函数表,以使得执行控制能响应于调用横跨源和目标指令集体系结构被转移至虚拟函数的重写实现。
[0053]在多个实施例中,该加载器可被配置成遍历该应用的重定位表,以检测该虚拟函数的重写实现。在多个实施例中,该加载器可被配置成修改虚拟函数表以将该虚拟函数的重写实现替换为该虚拟函数的重写实现的相应的包装器函数,该包装器函数包括指向该虚拟函数的重写实现的指针。
[0054]在多个实施例中,该指令集体系结构桥接层可进一步包括源指令集体系结构仿真器和库仿真器,源指令集体系结构仿真器和库仿真器被配置成相互协作以便于执行控制横跨源和目标指令集体系结构转移至该虚拟函数的重写实现,包括便于该类横跨源和目标指令集体系结构转移至库。
[0055]在多个实施例中,源指令集仿真器可被配置成保持源指令集体系结构的执行上下文,而库仿真器被配置成保持库执行上下文。库仿真器可进一步被配置成将调用重定向到该虚拟函数的重写实现的相应的包装器函数,以处理该调用、在源指令集体系结构的执行上下文中建立该调用、以及将该调用重定向至相应的门。此外,库仿真器可包括相应的门,该相应的门被配置成将该调用重定向至源ISA指令仿真器。源ISA指令仿真器可进一步被配置成将该调用重定向至该虚拟函数的重写实现。源指令集体系结构和目标指令集体系结构可以是相同的指令集体系结构。
[0056]此外,已公开了一种具有虚拟函数支持的将源指令集体系结构桥接至目标指令集体系结构的方法。该方法可包括通过由计算设备操作的指令集体系结构桥接层的加载器来加载应用以执行,其中该应用至少部分地针对源指令集体系结构实现,该源指令集体系结构至少包括具有计算设备的库的虚拟函数的重写实现的类,而且其中该计算设备实现该目标指令集体系结构。此外,该方法可包括(作为加载的一部分)通过加载器来检测该虚拟函数的重写实现,并通过加载器修改该类的虚拟函数表,以在修改之后将该类传递至库之后,使执行控制能响应于库的调用该虚拟函数的库服务来横跨源和目标指令集体系结构转移至该虚拟函数的重写实现。
[0057]在多个实施例中,检测可包括通过加载器遍历该应用的重定位表以检测该虚拟函数的重写实现。修改可包括修改该虚拟函数表,以将该虚拟函数的重写实现替换为相应的包装器函数,该包装器函数包括指向该虚拟函数的重写实现的指针。
[0058]在多个实施例中,该方法还可包括:通过指令集体系结构桥接层的源指令集体系结构仿真器来保持源ISA体系结构执行上下文;通过指令集体系结构桥接层的库仿真器来保持库执行上下文;以及在指令集体系结构仿真器与库仿真器之间协作,以便于在将该类传递至库之后响应于由库的库服务对虚拟函数的调用而将执行控制横跨源和目标指令集体系结构转移至该虚拟函数的重写实现。
[0059]在多个实施例中,该方法还可包括:通过库仿真器将调用重定向至与虚拟函数的重写实现相对应的库仿真器的包装器函数,以处理该调用、在源指令集体系结构的执行上下文中建立该调用;通过与该虚拟函数的重写实现的包装器函数相对应的库仿真器的门将该调用重定向至源ISA指令仿真器;和/或通过源ISA指令仿真器将该调用重定向至该虚拟函数的重写实现。
[0060]再者,已公开了一种用于执行至少部分地实现于源指令集体系结构中的应用的装置。该装置可包括:处理器和存储器布置,具有目标指令集体系结构;以及指令集体系结构桥接层,包括被配置成加载应用以执行的加载器,该应用至少部分地针对源指令集体系结构实现,且包括具有针对目标指令集体系结构实现的库的虚拟函数的重写实现的类。该加载器可被配置成(作为加载该应用的一部分)检测该虚拟函数的重写实现,并修改该类的虚拟函数表,以在将该类传递至库之后,使执行控制能响应于库的库服务调用该虚拟函数来横跨源和目标指令集体系结构转移至该虚拟函数的重写实现。
[0061]在多个实施例中,该加载器可被配置成遍历该应用的重定位表,以检测该虚拟函数的重写实现。该加载器可被配置成修改该虚拟函数表,以将该虚拟函数的重写实现替换为相应的包装器函数,该包装器函数包括指向该虚拟函数的实现的指针。该指令集体系结构桥接层还可包括指令源体系结构仿真器和库仿真器,被配置成由处理器和存储器操作以相互协作,以在将该类传递至库之后,使执行控制能响应于库服务调用该虚拟函数来横跨源和目标指令集体系结构转移至该虚拟函数的重写实现。
[0062]在多个实施例中,源指令集仿真器可被配置成保持源指令集体系结构的执行上下文,而库仿真器被配置成保持库执行上下文。库仿真器可进一步包括与虚拟函数的重写实现相对应的包装器函数,被配置成处理该调用、在源指令集体系结构的执行上下文中建立该调用、以及将该调用重定向至相应的门。库仿真器还可包括相应的门,该相应的门被配置成将该调用重定向至源ISA指令仿真器。该ISA指令仿真器可进一步被配置成将该调用重定向至该虚拟函数的重写实现。
[0063]在多个实施例中,该装置可以是服务器、桌面计算机、膝上型计算机、平板计算机、智能手机、个人数字助理、游戏控制台或因特网设备中选择的一个。该处理器可以是多核处理器。该装置可包括具有服务库的操作系统。该装置还可包括指令集体系结构无关的应用执行环境;其中该应用进一步使用该指令集体系结构无关的应用执行环境的至少一个其他服务。
【权利要求】
1.至少一个计算机可读存储介质,包括指令,所述指令被配置成使具有目标指令集体系结构的目标设备能响应于所述指令的执行将指令集体系结构桥接层提供给所述目标设备,以便于所述目标设备的库的库服务调用所述库的虚拟函数,同时对在所述目标设备上运行的应用提供服务;其中所述库服务针对所述目标指令集体系结构实现,而且所述应用至少部分地针对源指令集体系结构实现且包括具有所述虚拟函数的重写实现的类;而且其中所述指令集体系结构桥接层包括加载器,所述加载器配置成加载所述应用以供执行,并作为加载所述应用的一部分来检测所述虚拟函数的重写实现并修改所述类的虚拟函数表,以使执行控制能响应于所述调用横跨所述源和目标指令集体系结构被转移至所述虚拟函数的重写实现。
2.如权利要求1所述的至少一个计算机可读存储介质,其特征在于,所述加载器被配置成遍历所述应用的重定位表以检测所述虚拟函数的重写实现。
3.如权利要求1 所述的至少一个计算机可读存储介质,其特征在于,所述加载器被配置成修改所述虚拟函数表以将所述虚拟函数的重写实现替换为所述虚拟函数的重写实现的相应的包装器函数,所述包装器函数包括指向虚拟函数的重写实现的指针。
4.如权利要求3所述的至少一个计算机可读存储介质,其特征在于,所述指令集体系结构桥接层可进一步包括源指令集体系结构仿真器和库仿真器,所述源指令集体系结构仿真器和库仿真器被配置成相互协作以便于执行控制横跨所述源和目标指令集体系结构转移至所述虚拟函数的重写实现,包括便于所述类横跨源和目标指令集体系结构转移至所述库。
5.如权利要求4所述的至少一个计算机可读存储介质,其特征在于,所述源指令集仿真器被配置成保持所述源指令集体系结构的执行上下文,并且所述库仿真器被配置成保持库执行上下文。
6.如权利要求5所述的至少一个计算机可读存储介质,其特征在于,所述库仿真器进一步被配置成将所述调用重定向到所述虚拟函数的重写实现的相应的包装器函数,以处理所述调用、在所述源指令集体系结构的执行上下文中建立所述调用、以及将所述调用重定向至相应的门。
7.如权利要求6所述的至少一个计算机可读存储介质,其特征在于,所述库仿真器进一步包括所述相应的门,所述相应的门被配置成将所述调用重定向至所述源ISA指令仿真器。
8.如权利要求7所述的至少一个计算机可读存储介质,其特征在于,所述源ISA指令仿真器进一步被配置成将所述调用重定向至所述虚拟函数的重写实现。
9.如以上权利要求中的任一项所述的至少一个计算机可读存储介质,其特征在于,所述源指令集体系结构和所述目标指令集体系结构是相同的指令集体系结构。
10.一种具有虚拟函数支持的将源指令集体系结构桥接至目标指令集体系结构的方法,包括: 通过由计算设备操作的指令集体系结构桥接层的加载器来加载应用以供执行,其中所述应用至少部分地针对源指令集体系结构实现,所述源指令集体系结构至少包括具有所述计算设备的库的虚拟函数的重写实现的类,而且其中所述计算设备实现所述目标指令集体系结构;以及作为所述加载的一部分,通过所述加载器来检测所述虚拟函数的重写实现,并通过所述加载器修改所述类的虚拟函数表,以在修改之后将所述类传递至所述库之后,使执行控制能响应于所述库的调用所述虚拟函数的库服务来横跨所述源和目标指令集体系结构转移至所述虚拟函数的重写实现。
11.如权利要求10所述的方法,其特征在于,所述检测包括通过所述加载器遍历所述应用的重定位表以检测所述虚拟函数的重写实现。
12.如权利要求10所述的方法,其特征在于,修改包括修改所述虚拟函数表,以将所述虚拟函数的重写实现替换为相应的包装器函数,所述包装器函数包括指向所述虚拟函数的重写实现的指针。
13.如权利要求12所述的方法,其特征在于,还包括: 通过所述指令集体系结构桥接层的源指令集体系结构仿真器来保持源ISA体系结构执行上下文; 通过所述指令集体系结构桥接层的库仿真器来保持库执行上下文; 在所述指令集体系结构仿真器与所述库仿真器之间协作,以便于在将所述类传递至所述库之后响应于由所述库的库服务对虚拟函数的调用而将执行控制横跨所述源和目标指令集体系结构转移至所述虚拟函数的重写实现。
14.如权利要求13所述的方法,其特征在于,还包括通过所述库仿真器将所述调用重定向至与所述虚拟函数的重写实现相对应的所述库仿真器的包装器函数,以处理所述调用并在所述源指令集体系结构的执行上下文中建立所述调用。
15.如权利要求14所述的方法,其特征在于,还包括通过所述库仿真器的与所述虚拟函数的重写实现的包装器函数相对应的门将所述调用重定向至所述源ISA指令仿真器。
16.如权利要求15所述的方法,其特征在于,还包括通过所述源ISA指令仿真器将所述调用重定向至所述虚拟函数的重写实现。
17.如权利要求10- 16中的任一项所述的方法,其特征在于,所述源指令集体系结构和所述目标指令集体系结构是相同的指令集体系结构。
18.一种用于执行至少部分地在源指令集体系结构中实现的应用的装置,所述装置包括: 处理器和存储器布置,具有目标指令集体系结构;以及 指令集体系结构桥接层,包括被配置成加载应用以供执行的加载器,所述应用至少部分地针对源指令集体系结构实现且包括具有针对所述目标指令集体系结构实现的库的虚拟函数的重写实现的类,其中所述加载器被配置成作为加载所述应用的一部分来检测所述虚拟函数的重写实现,并修改所述类的虚拟函数表,以在将所述类传递至所述库之后,使执行控制能响应于所述库的库服务对所述虚拟函数的调用而横跨所述源和目标指令集体系结构转移至所述虚拟函数的重写实现。
19.如权利要求18所述的装置,其特征在于,所述加载器被配置成遍历所述应用的重定位表以检测所述虚拟函数的重写实现。
20.如权利要求18所述的装置,其特征在于,所述加载器被配置成修改所述虚拟函数表,以将所述虚拟函数的重写实现替换为相应的包装器函数,所述包装器函数包括指向所述虚拟函数的实现的指针。
21.如权利要求20所述的装置,其特征在于,所述指令集体系结构桥接层还包括指令源体系结构仿真器和库仿真器,所述指令源体系结构仿真器和库仿真器被配置成由处理器和存储器操作以相互协作,以在将所述类传递至所述库之后,使执行控制能响应于由库服务调用所述虚拟函数来横跨所述源和目标指令集体系结构转移至所述虚拟函数的重写实现。
22.如权利要求21所述的装置,其特征在于,所述源指令集仿真器被配置成保持所述源指令集体系结构的执行上下文,并且所述库仿真器被配置成保持库执行上下文。
23.如权利要求22所述的装置,其特征在于,所述库仿真器进一步包括与所述虚拟函数的重写实现相对应的包装器函数,所述包装器函数被配置成处理所述调用、在所述源指令集体系结构的执行上下文中建立所述调用、以及将所述调用重定向至相应的门。
24.如权利要求23所述的装置,其特征在于,所述库仿真器进一步包括所述相应的门,所述相应的门被配置成将所述调用重定向至所述源ISA指令仿真器。
25.如权利要求24所述的装置,其特征在于,所述源ISA指令仿真器进一步被配置成将所述调用重定向至所述虚拟函数的重写实现。
26.如权利要求18- 25中的任一项所述的装置,其特征在于,所述源指令集体系结构和所述目标指令集体系结构是相同的指令集体系结构。
27.如权利要求26所述的装置,其特征在于,所述装置是服务器、桌面计算机、膝上型计算机、平板计算机、智能手机、个人数字助理、游戏控制台或因特网设备中选择的一个。
28.如权利要求26·所述的装置,其特征在于,所述处理器是多核处理器。
29.如权利要求26所述的装置,其特征在于,还包括包含所述服务库的操作系统。
30.如权利要求26所述的装置,其特征在于,还包括指令集体系结构无关的应用执行环境;其中所述应用进一步使用所述指令集体系结构无关的应用执行环境的至少一个其他服务。
【文档编号】G06F9/44GK103443763SQ201280002620
【公开日】2013年12月11日 申请日期:2012年8月8日 优先权日:2012年8月8日
【发明者】Y·吴, J·李, X·林 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1