一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

全局变量的重定位方法和装置与流程

2022-08-13 20:25:28 来源:中国专利 TAG:

技术特征:
1.一种全局变量的重定位方法,其特征在于,包括:获取第一可执行程序,所述第一可执行程序对全局变量的访问依赖重定位寄存器的重定位;对所述第一可执行程序进行处理得到第二可执行程序,所述第二可执行程序对全局变量的访问不依赖重定位寄存器的重定位;确定所述第一可执行程序中各个全局变量的相对地址,并根据所述第二可执行程序获取所述第二可执行程序中已初始化变量的首地址的第一加载地址;根据所述第一加载地址以及每个所述全局变量的相对地址,确定每个所述全局变量的实际加载地址,并将每个所述相对地址修改为每个所述相对地址对应的实际加载地址。2.根据权利要求1所述的全局变量的重定位方法,其特征在于,所述对所述第一可执行程序进行处理得到第二可执行程序的步骤包括:生成所述第一可执行程序对应的反汇编文件;扫描所述反汇编文件确定所述第一可执行程序中的各个第一指令,所述第一指令是所述重定位寄存器的重定位指令;将各个所述第一指令替换为第二指令得到所述第二可执行程序,所述第二指令是无效指令。3.根据权利要求2所述的全局变量的重定位方法,其特征在于,所述确定所述第一可执行程序中各个全局变量的相对地址的步骤包括:根据所述反汇编文件获取每个所述第一指令对应的第一寄存器;在所述反汇编文件中确定每个所述第一指令对应的目标指令,其中,所述第一指令对应的目标指令是向所述第一指令对应的第一寄存器赋值的指令;根据每个所述目标指令获取各个所述全局变量的相对地址。4.根据权利要求2所述的全局变量的重定位方法,其特征在于,所述根据所述第二可执行程序获取所述第二可执行程序中已初始化变量的首地址的第一加载地址的步骤包括:将各个所述相对地址添加至所述第二可执行程序的头部位置得到第三可执行程序;获取所述第二可执行程序中已初始化变量的首地址,并加载所述第三可执行程序得到所述首地址的第一加载地址。5.根据权利要求4所述的全局变量的重定位方法,其特征在于,所述将各个所述相对地址添加至所述第二可执行程序的头部位置得到第三可执行程序的步骤包括:在各个所述相对地址中去除重复的相对地址;将去除重复相对地址的各个所述相对地址,添加至所述第二可执行程序的头部位置,得到第三可执行程序。6.根据权利要求4所述的全局变量的重定位方法,其特征在于,所述将各个所述相对地址添加至所述第二可执行程序的头部位置得到第三可执行程序的步骤包括:将各个所述相对地址添加至所述第二可执行程序的头部位置,并在添加所述相对地址的所述第二可执行程序的尾部位置添加预设字符,得到所述第三可执行程序。7.根据权利要求1-6任一项所述的全局变量的重定位方法,其特征在于,所述获取第一可执行程序的步骤包括:编译初始可执行程序;
将所述初始可执行程序与所述重定位寄存器进行连接,并在将所述初始可执行程序与所述重定位寄存器的编译选项设置为位置无关,得到所述第一可执行程序。8.一种全局变量的重定位装置,其特征在于,包括:获取模块,用于获取第一可执行程序,所述第一可执行程序对全局变量的访问依赖重定位寄存器的重定位;处理模块,用于对所述第一可执行程序进行处理得到第二可执行程序,所述第二可执行程序对全局变量的访问不依赖重定位寄存器的重定位;确定模块,用于确定所述第一可执行程序中各个全局变量的相对地址,并根据所述第二可执行程序获取所述第二可执行程序中已初始化变量的首地址的第一加载地址;所述确定模块,还用于根据所述第一加载地址以及每个所述全局变量的相对地址,确定每个所述全局变量的实际加载地址,并将每个所述相对地址修改为每个所述相对地址对应的实际加载地址。9.一种全局变量的重定位设备,其特征在于,包括:存储器和处理器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1至7任一项所述的全局变量的重定位方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7任一项所述的全局变量的重定位方法。11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7任一项所述的全局变量的重定位方法。

技术总结
本发明提供一种全局变量的重定位方法和装置,该方法包括:对全局变量的访问依赖重定位寄存器重定位的第一可执行程序进行处理,得到不依赖重定位寄存器重定位的第二可执行程序;确定第一可执行程序中各个全局变量的相对地址,并根据第二可执行程序获取第二可执行程序中已初始化变量的首地址的第一加载地址,以及每个全局变量的相对地址,确定每个全局变量的实际加载地址,并将每个相对地址修改为每个相对地址对应的实际加载地址。本发明中,通过对第一可执行程序进行处理,得到不依赖重定位寄存器重定位全局变量的第二可执行程序,并基于第二可执行程序实现各个全局变量的重定位,实现了多个全局变量的动态加载需求。实现了多个全局变量的动态加载需求。实现了多个全局变量的动态加载需求。


技术研发人员:张火明
受保护的技术使用者:展讯通信(深圳)有限公司
技术研发日:2022.06.10
技术公布日:2022/8/12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献