在动态二进制翻译系统中处理间接转移指令的方法和装置制造方法及图纸

技术编号:15690537 阅读:104 留言:0更新日期:2017-06-24 03:00
本发明专利技术提供了一种在动态二进制翻译系统中处理间接转移指令的方法和系统;方法包括:保存用于在动态二进制翻译系统中处理间接转移指令的重定向表;当接收到间接转移指令时,根据间接转移指令中的源地址在所保存的重定向表中查找该源地址对应的表项;所述重定向表以源地址为索引建立;如果查找到的表项为空,则在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;如果查找到的表项中包含重定向信息,则执行所述重定向信息,将程序控制流重定向至相应的目标地址处。本发明专利技术能够提升动态二进制翻译系统的性能。

Method and apparatus for processing indirect transfer instructions in a dynamic binary translation system

The present invention provides a method and system for processing the indirect transfer instruction in dynamic binary translation system; method includes: save for indirect transfer instruction redirection table in dynamic binary translation system; when receiving the indirect transfer instruction, according to the indirect transfer instruction address source in the table stored in the redirection table to find the corresponding source address; the redirection table to the source address for indexing; if find the table is empty, the table is filled with the redirection information destination address program control flow redirection to the source address; if you include the redirection information to find the table in executing the program control flow redirection information, will be redirected to the corresponding destination address. The invention can improve the performance of a dynamic binary translation system.

【技术实现步骤摘要】
在动态二进制翻译系统中处理间接转移指令的方法和装置
本专利技术涉及计算机应用领域,尤其涉及一种在动态二进制翻译系统中处理间接转移指令的方法和装置。
技术介绍
动态二进制翻译技术(dynamictranslation)广泛应用于指令系统模拟,二进制插桩,动态优化,程序行为分析等领域。在大多数应用场景下,性能是翻译系统需考虑的重要指标。其中,控制转移指令的处理方法是影响动态翻译系统性能的重要因素。控制转移指令一般可分为条件转移,直接跳转与间接转移。对于转移目标固定的条件转移指令与直接跳转指令,翻译系统可使用代码块链接技术来降低开销。而间接转移指令(IB:IndirectBranch)的转移目标在运行时才可以确定,且转移目标不固定,因此每次执行时均需进行一次源程序计数器地址(SPC:SourceProgramCounteraddress,简称源地址)到目标程序计数器地址(TPC:TargetProgramCounteraddress,简称目标地址)的地址转换操作,导致了巨大的性能开销,使得间接转移指令的处理过程成为系统性能开销的主要来源。图1为现有技术中动态翻译系统处理间接转移指令的流程示意图。在获取到转移目标的源地址(SPC)时,翻译系统会进入一个PC分发器(Dispatcher),将源地址转换为目标地址(TPC)。翻译系统一般会维护一个SPC-TPC的映射表,在源地址产生后,运行一个Hash查表例程来进行地址转换,然后再跳转至相应的目标地址。但进行一次Hash查表需要10条以上指令,导致较大的开销。软件预测法可以一定程度上避免Hash查表开销,即在转移目标的SPC产生后,进行若干次的比较-跳转的预测操作,若预测成功则直接跳转。但软件预测法的预测准确率一般较低,制约了其对整体性能的提升。此外,还出现了一些软硬件协同的优化方案,如在CPU流水线中新增一个跳转地址查找表,或者新增一个按内容访问的相联存储器(CAM:content-associatedmemory),但这些方案均需改动硬件或指令系统,通用性较差,无法在已有平台上实现。在动态二进制翻译系统中,当间接转移指令的转移目标产生时,如何实时进行一次源地址到目标地址的转换需要提供一种新的技术方案。。
技术实现思路
本专利技术提供一种在动态二进制翻译系统中处理间接转移指令的方法和系统,要解决的技术问题是如何提升动态二进制翻译系统的性能。为解决上述技术问题,本专利技术提供了一种在动态二进制翻译系统中处理间接转移指令的方法,包括:保存用于在动态二进制翻译系统中处理间接转移指令的重定向表;当接收到间接转移指令时,根据间接转移指令中的源地址在所保存的重定向表中查找该源地址对应的表项;所述重定向表以源地址为索引建立;如果查找到的表项为空,则在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;如果查找到的表项中包含重定向信息,则执行所述重定向信息,将程序控制流重定向至相应的目标地址处。可选地,所述重定向表复用源二进制代码空间存储,或单独存储在一块与源二进制代码空间具有一个固定偏移量的影子空间中;所述在重定向表中查找该源地址对应的表项的步骤包括:若重定向表存储在源二进制代码空间中,则直接查找所述源地址所代表的存储位置中的表项;若重定向表存储在影子空间中,则在所述影子空间中,查找所述源地址加上所述的固定偏移量的结果所代表的存储位置中的表项。可选地,如果所述动态二进制翻译系统的源平台是变长指令系统平台,则所述重定向表中的表项为链式表项,所述重定向信息为短跳转指令;如果所述动态二进制翻译系统的源平台是定长指令系统平台,则所述重定向信息包括源地址相对应的目标地址。可选地,所述的方法还包括:当所述动态二进制翻译系统启动后,将源二进制代码空间或影子空间的页面标记为不可运行;当在页面填入一个表项后,在该页面其他位置填入软件中断指令;所述如果查找到的表项为空,则在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息的步骤包括:当页面中不包含表项且空白表项被执行时,触发页面权限异常,调用页面异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;当页面已包含一个表项且空白表项被执行时,触发软件中断异常,调用软件中断异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息。本专利技术还提供了一种在动态二进制翻译系统中处理间接转移指令的装置,包括:存储单元,用于保存用于在动态二进制翻译系统中处理间接转移指令的重定向表;查找单元,用于当接收到间接转移指令时,根据间接转移指令中的源地址在所述存储单元所保存的重定向表中查找该源地址对应的表项;所述重定向表以源地址为索引建立;写入单元,用于当查找到的表项为空时,在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;执行单元,用于当查找到的表项中包含重定向信息时,执行所述重定向信息,将程序控制流重定向至相应的目标地址处。可选地,所述存储单元复用源二进制代码空间保存所述重定向表,或将所述重定向表单独存储在一块与源二进制代码空间具有一个固定偏移量的影子空间中;所述查找单元在重定向表中查找该源地址对应的表项是指:若重定向表存储在源二进制代码空间中,所述查找单元直接查找所述源地址所代表的存储位置中的表项;若重定向表存储在影子空间中,所述查找单元在所述影子空间中查找所述源地址加上所述固定偏移量的结果所代表的存储位置中的表项。可选地,如果所述动态二进制翻译系统的源平台是变长指令系统平台,则所述重定向表中的表项为链式表项,所述重定向信息为短跳转指令;如果所述动态二进制翻译系统的源平台是定长指令系统平台,则所述重定向信息包括源地址相对应的目标地址。可选地,所述的装置还包括:按需构造单元,用于当所述动态二进制翻译系统启动后,将源二进制代码空间或影子空间的页面标记为不可运行;当在页面填入一个表项后,在该页面其他位置填入软件中断指令;所述写入单元当查找到的表项为空时,在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息是指:所述写入单元当页面中不包含表项且空白表项被执行时,触发页面权限异常,调用页面异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;当页面已包含一个表项且空白表项被执行时,触发软件中断异常,调用软件中断异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息。与现有技术相比,本专利技术的至少一个实施例通过在动态二进制翻译系统运行过程中实时建立一个重定向表来处理间接转移指令,在处理间接转移指令时无需对转移目标进行地址转换,可直接跳转至源地址,再由该源地址对应的重定向信息将控制流定向至相应的目标地址,无需进行任何计算便可直接跳转,避免了在处理该类指令时进行地址转换操作;而且不需要新增硬件或改动指令系统,可用于绝大部分动态二进制翻译系统中,以少量内存冗余为代价优化了间接转移指令的处理过程,可大幅提升翻译系统的整体性能。本专利技术的又一个实施例采用两层粒度的基于异常的按需构造方法建立所述重定向表,系统启动时整个表为空白表,各个表项第一次被使用时填入重定向信息,采用基于异常机制的方法来保证空白表本文档来自技高网
...
在动态二进制翻译系统中处理间接转移指令的方法和装置

【技术保护点】
一种在动态二进制翻译系统中处理间接转移指令的方法,其特征在于,包括:保存用于在动态二进制翻译系统中处理间接转移指令的重定向表;当接收到间接转移指令时,根据间接转移指令中的源地址在所保存的重定向表中查找该源地址对应的表项;所述重定向表以源地址为索引建立;如果查找到的表项为空,则在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;如果查找到的表项中包含重定向信息,则执行所述重定向信息,将程序控制流重定向至相应的目标地址处。

【技术特征摘要】
1.一种在动态二进制翻译系统中处理间接转移指令的方法,其特征在于,包括:保存用于在动态二进制翻译系统中处理间接转移指令的重定向表;当接收到间接转移指令时,根据间接转移指令中的源地址在所保存的重定向表中查找该源地址对应的表项;所述重定向表以源地址为索引建立;如果查找到的表项为空,则在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;如果查找到的表项中包含重定向信息,则执行所述重定向信息,将程序控制流重定向至相应的目标地址处。2.根据权利要求1所述的方法,其特征在于:所述重定向表复用源二进制代码空间存储,或单独存储在一块与源二进制代码空间具有一个固定偏移量的影子空间中;所述在重定向表中查找该源地址对应的表项的步骤包括:若重定向表存储在源二进制代码空间中,则直接查找所述源地址所代表的存储位置中的表项;若重定向表存储在影子空间中,则在所述影子空间中,查找所述源地址加上所述的固定偏移量的结果所代表的存储位置中的表项。3.根据权利要求1所述的方法,其特征在于:如果所述动态二进制翻译系统的源平台是变长指令系统平台,则所述重定向表中的表项为链式表项,所述重定向信息为短跳转指令;如果所述动态二进制翻译系统的源平台是定长指令系统平台,则所述重定向信息包括源地址相对应的目标地址。4.根据权利要求1~3中任一项所述的方法,其特征在于,还包括:当所述动态二进制翻译系统启动后,将源二进制代码空间或影子空间的页面标记为不可运行;当在页面填入一个表项后,在该页面其他位置填入软件中断指令;所述如果查找到的表项为空,则在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息的步骤包括:当页面中不包含表项且空白表项被执行时,触发页面权限异常,调用页面异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;当页面已包含一个表项且空白表项被执行时,触发软件中断异常,调用软件中断异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息。5.一种在动态二进制翻译系统中处理间接转移指令的装置,其特征在于,包...

【专利技术属性】
技术研发人员:程旭贾宁杨春
申请(专利权)人:北京北大众志微系统科技有限责任公司
类型:发明
国别省市:北京,11

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

1