[发明专利]在动态二进制翻译系统中处理间接转移指令的方法和装置在审
申请号: | 201611209017.3 | 申请日: | 2016-12-23 |
公开(公告)号: | CN106873944A | 公开(公告)日: | 2017-06-20 |
发明(设计)人: | 程旭;贾宁;杨春 | 申请(专利权)人: | 北京北大众志微系统科技有限责任公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/32 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 李红爽,栗若木 |
地址: | 100080 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 二进制 翻译 系统 处理 间接 转移 指令 方法 装置 | ||
1.一种在动态二进制翻译系统中处理间接转移指令的方法,其特征在于,包括:
保存用于在动态二进制翻译系统中处理间接转移指令的重定向表;
当接收到间接转移指令时,根据间接转移指令中的源地址在所保存的重定向表中查找该源地址对应的表项;所述重定向表以源地址为索引建立;
如果查找到的表项为空,则在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;
如果查找到的表项中包含重定向信息,则执行所述重定向信息,将程序控制流重定向至相应的目标地址处。
2.根据权利要求1所述的方法,其特征在于:
所述重定向表复用源二进制代码空间存储,或单独存储在一块与源二进制代码空间具有一个固定偏移量的影子空间中;
所述在重定向表中查找该源地址对应的表项的步骤包括:
若重定向表存储在源二进制代码空间中,则直接查找所述源地址所代表的存储位置中的表项;
若重定向表存储在影子空间中,则在所述影子空间中,查找所述源地址加上所述的固定偏移量的结果所代表的存储位置中的表项。
3.根据权利要求1所述的方法,其特征在于:
如果所述动态二进制翻译系统的源平台是变长指令系统平台,则所述重定向表中的表项为链式表项,所述重定向信息为短跳转指令;
如果所述动态二进制翻译系统的源平台是定长指令系统平台,则所述重定向信息包括源地址相对应的目标地址。
4.根据权利要求1~3中任一项所述的方法,其特征在于,还包括:
当所述动态二进制翻译系统启动后,将源二进制代码空间或影子空间的页面标记为不可运行;当在页面填入一个表项后,在该页面其他位置填入软件中断指令;
所述如果查找到的表项为空,则在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息的步骤包括:
当页面中不包含表项且空白表项被执行时,触发页面权限异常,调用页面异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;
当页面已包含一个表项且空白表项被执行时,触发软件中断异常,调用软件中断异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息。
5.一种在动态二进制翻译系统中处理间接转移指令的装置,其特征在于,包括:
存储单元,用于保存用于在动态二进制翻译系统中处理间接转移指令的重定向表;
查找单元,用于当接收到间接转移指令时,根据间接转移指令中的源地址在所述存储单元所保存的重定向表中查找该源地址对应的表项;所述重定向表以源地址为索引建立;
写入单元,用于当查找到的表项为空时,在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;
执行单元,用于当查找到的表项中包含重定向信息时,执行所述重定向信息,将程序控制流重定向至相应的目标地址处。
6.根据权利要求5所述的装置,其特征在于:
所述存储单元复用源二进制代码空间保存所述重定向表,或将所述重定向表单独存储在一块与源二进制代码空间具有一个固定偏移量的影子空间中;
所述查找单元在重定向表中查找该源地址对应的表项是指:
若重定向表存储在源二进制代码空间中,所述查找单元直接查找所述源地址所代表的存储位置中的表项;若重定向表存储在影子空间中,所述查找单元在所述影子空间中查找所述源地址加上所述固定偏移量的结果所代表的存储位置中的表项。
7.根据权利要求5所述的装置,其特征在于:
如果所述动态二进制翻译系统的源平台是变长指令系统平台,则所述重定向表中的表项为链式表项,所述重定向信息为短跳转指令;
如果所述动态二进制翻译系统的源平台是定长指令系统平台,则所述重定向信息包括源地址相对应的目标地址。
8.根据权利要求5~7中任一项所述的装置,其特征在于,还包括:
按需构造单元,用于当所述动态二进制翻译系统启动后,将源二进制代码空间或影子空间的页面标记为不可运行;当在页面填入一个表项后,在该页面其他位置填入软件中断指令;
所述写入单元当查找到的表项为空时,在该表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息是指:
所述写入单元当页面中不包含表项且空白表项被执行时,触发页面权限异常,调用页面异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息;当页面已包含一个表项且空白表项被执行时,触发软件中断异常,调用软件中断异常处理函数在表项中填入将程序控制流重定向至所述源地址对应的目标地址处的重定向信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京北大众志微系统科技有限责任公司,未经北京北大众志微系统科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611209017.3/1.html,转载请声明来源钻瓜专利网。