[发明专利]一种重定位方法、装置、电子设备及可读介质有效
申请号: | 202011425790.X | 申请日: | 2020-12-08 |
公开(公告)号: | CN112631672B | 公开(公告)日: | 2023-07-04 |
发明(设计)人: | 徐文瑞;张宝祺;程璐璐 | 申请(专利权)人: | 龙芯中科技术股份有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 莎日娜 |
地址: | 100095 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 定位 方法 装置 电子设备 可读 介质 | ||
本发明提供了一种重定位方法、装置、电子设备及可读介质,该方法中,在加载目标PE文件时,检测目标PE文件的预设重定位表中的各个重定位表项;若检测到重定位表项对应的重定位类型为第一重定位类型,则将重定位表项作为第一重定位表项,并根据第一重定位表项对目标指令及目标指令对应的可合并指令,同时进行重定位操作;第一重定位类型用于指示对目标指令及可合并指令同时进行重定位操作,第一重定位表项为目标指令及可合并指令共同对应的重定位表项。通过为多个指令设置共同对应的重定位表项,一定程度上可以降低重定位表的长度,以及使得根据该共同对应的重定位表项可以实现对多个指令的重定位操作,进而一定程度上提高重定位操作的效率。
技术领域
本发明实施例涉及电子设备技术领域,尤其涉及一种重定位方法、装置、电子设备及可读介质。
背景技术
目前,由于实际运行时,可移植执行(Portable Execute)文件中的指令可能无法在之前指定的地址上运行,因此,经常会对指令进行重定位操作,以确保指令能够正常被执行。
在先技术中,为了实现重定位操作,往往是针对每个指令设置一种或多种重定位类型,针对每条指令设置一项重定位表项。相应地,进行重定位操作时,需要针对每条指令对应的重定位表项,针对每条指令逐个进行重定位操作。这种方式中,重定位操作的效率较低且重定位表较冗长。
发明内容
本发明实施例提供一种重定位方法、装置、电子设备及可读介质,以解决相关技术中重定位操作的效率较低且重定位表较冗长的问题。
第一方面,提供了一种重定位方法,所述方法包括:
在加载目标可移植执行PE文件时,检测所述目标PE文件的预设重定位表中的各个重定位表项;
若检测到所述重定位表项对应的重定位类型为第一重定位类型,则将所述重定位表项作为第一重定位表项,并根据所述第一重定位表项对目标指令及所述目标指令对应的可合并指令,同时进行重定位操作;
其中,所述第一重定位类型用于指示对所述目标指令及所述可合并指令同时进行重定位操作,所述第一重定位表项为所述目标指令及所述可合并指令共同对应的重定位表项。
可选的,所述方法还包括:
在生成所述目标PE文件时,确定目标源码中是否存在所述目标指令对应的可合并指令;
在存在可合并指令的情况下,为所述目标指令及所述可合并指令设置所述第一重定位类型,并根据所述目标指令及所述可合并指令的相关信息生成所述第一重定位表项,以生成所述预设重定位表。
可选的,所述确定目标源码中是否存在所述目标指令对应的可合并指令之后,还包括:在不存在可合并指令的情况下时,为所述目标指令单独设置第二重定位类型,并根据所述目标指令的相关信息生成第二重定位表项;
所述检测所述目标PE文件的预设重定位表中的各个重定位表项之后,还包括:
若检测到所述重定位表项对应的重定位类型为所述第二重定位类型,则将所述重定位表项确定为所述第二重定位表项,并根据所述第二重定位表项对所述目标指令单独进行重定位操作。
可选的,所述目标指令及所述可合并指令共同对应的第一重定位表项的数量为1。
可选的,所述根据所述第一重定位表项对目标指令及所述目标指令对应的可合并指令,同时进行重定位操作,包括:
读取所述第一重定位表项中记录的基地址,以及,读取所述第一重定位表项中记录的所述目标指令及各个所述可合并指令对应的偏移量;
根据所述基地址及各个所述偏移量,确定所述目标指令及各个所述可合并指令对应的重定位地址。
可选的,所述确定目标源码中是否存在所述目标指令对应的可合并指令,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于龙芯中科技术股份有限公司,未经龙芯中科技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011425790.X/2.html,转载请声明来源钻瓜专利网。