全局变量的重定位方法和装置制造方法及图纸

技术编号:34538091 阅读:16 留言:0更新日期:2022-08-13 21:33
本发明专利技术提供一种全局变量的重定位方法和装置,该方法包括:对全局变量的访问依赖重定位寄存器重定位的第一可执行程序进行处理,得到不依赖重定位寄存器重定位的第二可执行程序;确定第一可执行程序中各个全局变量的相对地址,并根据第二可执行程序获取第二可执行程序中已初始化变量的首地址的第一加载地址,以及每个全局变量的相对地址,确定每个全局变量的实际加载地址,并将每个相对地址修改为每个相对地址对应的实际加载地址。本发明专利技术中,通过对第一可执行程序进行处理,得到不依赖重定位寄存器重定位全局变量的第二可执行程序,并基于第二可执行程序实现各个全局变量的重定位,实现了多个全局变量的动态加载需求。实现了多个全局变量的动态加载需求。实现了多个全局变量的动态加载需求。

【技术实现步骤摘要】
全局变量的重定位方法和装置


[0001]本专利技术涉及动态加载技术,尤其涉及一种全局变量的重定位方法和装置。

技术介绍

[0002]在设备的操作系统运行过程中,会涉及到将程序和数据从外存或者网络加载到内存的过程,该过程即为动态加载。
[0003]在RTOS(Real Time Operating System,实时操作系统)系统中,通过编译器编译出可执行程序,再将可执行程序中的代码加载到内存的任意地址运行,即可实现RTOS系统的动态加载。如果可执行程序支持包含全局变量的代码的动态加载,需要进行全局变量的地址的重定位。
[0004]全局变量的重定位依赖于重定位寄存器。在RTOS系统中一般只含有一个重定位寄存器,如果需要对多个包含全局变量的代码进行动态加载,一个重定位寄存器无法满足多个全局变量的动态加载需求。

技术实现思路

[0005]本专利技术提供一种全局变量的重定位方法和装置,旨在满足多个全局变量的动态加载需求。
[0006]一方面,本专利技术提供一种全局变量的重定位方法,包括:
[0007]获取第一可执行程序,所述第一可执行程序对全局变量的访问依赖重定位寄存器的重定位;
[0008]对所述第一可执行程序进行处理得到第二可执行程序,所述第二可执行程序对全局变量的访问不依赖重定位寄存器的重定位;
[0009]确定所述第一可执行程序中各个全局变量的相对地址,并根据所述第二可执行程序获取所述第二可执行程序中已初始化变量的首地址的第一加载地址;
[0010]根据所述第一加载地址以及每个所述全局变量的相对地址,确定每个所述全局变量的实际加载地址,并将每个所述相对地址修改为每个所述相对地址对应的实际加载地址。
[0011]在一实施例中,所述对所述第一可执行程序进行处理得到第二可执行程序的步骤包括:
[0012]生成所述第一可执行程序对应的反汇编文件;
[0013]扫描所述反汇编文件确定所述第一可执行程序中的各个第一指令,所述第一指令是所述重定位寄存器的重定位指令;
[0014]将各个所述第一指令替换为第二指令得到所述第二可执行程序,所述第二指令是无效指令。
[0015]在一实施例中,所述确定所述第一可执行程序中各个全局变量的相对地址的步骤包括:
[0016]根据所述反汇编文件获取每个所述第一指令对应的第一寄存器;
[0017]在所述反汇编文件中确定每个所述第一指令对应的目标指令,其中,所述第一指令对应的目标指令是向所述第一指令对应的第一寄存器赋值的指令;
[0018]根据每个所述目标指令获取各个所述全局变量的相对地址。
[0019]在一实施例中,所述根据所述第二可执行程序获取所述第二可执行程序中已初始化变量的首地址的第一加载地址的步骤包括:
[0020]将各个所述相对地址添加至所述第二可执行程序的头部位置得到第三可执行程序;
[0021]获取所述第二可执行程序中已初始化变量的首地址,并加载所述第三可执行程序得到所述首地址的第一加载地址。
[0022]在一实施例中,所述将各个所述相对地址添加至所述第二可执行程序的头部位置得到第三可执行程序的步骤包括:
[0023]在各个所述相对地址中去除重复的相对地址;
[0024]将去除重复相对地址的各个所述相对地址,添加至所述第二可执行程序的头部位置,得到第三可执行程序。
[0025]在一实施例中,所述将各个所述相对地址添加至所述第二可执行程序的头部位置得到第三可执行程序的步骤包括:
[0026]将各个所述相对地址添加至所述第二可执行程序的头部位置,并在所述第二可执行程序的尾部位置添加预设字符,得到所述第三可执行程序。
[0027]在一实施例中,所述获取第一可执行程序的步骤包括:
[0028]编译初始可执行程序;
[0029]将所述初始可执行程序与所述重定位寄存器进行连接,并在将所述初始可执行程序与所述重定位寄存器的编译选项设置为位置无关,得到所述第一可执行程序。
[0030]另一方面,本专利技术还提供一种全局变量的重定位装置,包括:
[0031]获取模块,用于获取第一可执行程序,所述第一可执行程序对全局变量的访问依赖重定位寄存器的重定位;
[0032]处理模块,用于对所述第一可执行程序进行处理得到第二可执行程序,所述第二可执行程序对全局变量的访问不依赖重定位寄存器的重定位;
[0033]确定模块,用于确定所述第一可执行程序中各个全局变量的相对地址,并根据所述第二可执行程序获取所述第二可执行程序中已初始化变量的首地址的第一加载地址;
[0034]所述确定模块,还用于根据所述第一加载地址以及每个所述全局变量的相对地址,确定每个所述全局变量的实际加载地址,并将每个所述相对地址修改为每个所述相对地址对应的实际加载地址。
[0035]另一方面,本专利技术还提供一种全局变量的重定位设备,包括:存储器和处理器;
[0036]所述存储器存储计算机执行指令;
[0037]所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如上所述的全局变量的重定位方法。
[0038]另一方面,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上所述的全局变
量的重定位方法。
[0039]另一方面,本专利技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的全局变量的重定位方法。
[0040]本专利技术提供的全局变量的重定位方法和装置,获取依赖重定位寄存器重定位全局变量的第一可执行程序,对第一可执行程序进行处理得到不依赖重定位寄存器重定位全局变量的第二可执行程序,根据第二可执行程序确定各个全局变量的相对地址,并根据第二可执行程序获取第二可执行程序中已初始化变量的首地址的第一加载地址,再根据第一加载地址以及每个全局变量的相对地址确定每个全局变量的实际加载地址,并将存放的相对地址修改为相对地址对应的实际加载地址完成全局变量的重定位。本专利技术中,通过依赖重定位寄存器重定位全局变量的第一可执行程序进行处理,得到不依赖重定位寄存器重定位全局变量的第二可执行程序,并基于第二可执行程序实现各个全局变量的重定位,消除了重定位寄存器影响第二可执行程序对多个全局变量的重定位,从而实现了多个全局变量的动态加载需求。
附图说明
[0041]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0042]图1为本专利技术全局变量的重定位方法第一实施例的流程示意图;
[0043]图2为本专利技术全局变量的重定位方法第二实施例中步骤S20的细化流程示意图;
[0044]图3为本专利技术全局变量的重定位方法第三实施例中步骤S30的细化流程示意图;
[0045]图4为本专利技术全局变量的重定位方法本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种全局变量的重定位方法,其特征在于,包括:获取第一可执行程序,所述第一可执行程序对全局变量的访问依赖重定位寄存器的重定位;对所述第一可执行程序进行处理得到第二可执行程序,所述第二可执行程序对全局变量的访问不依赖重定位寄存器的重定位;确定所述第一可执行程序中各个全局变量的相对地址,并根据所述第二可执行程序获取所述第二可执行程序中已初始化变量的首地址的第一加载地址;根据所述第一加载地址以及每个所述全局变量的相对地址,确定每个所述全局变量的实际加载地址,并将每个所述相对地址修改为每个所述相对地址对应的实际加载地址。2.根据权利要求1所述的全局变量的重定位方法,其特征在于,所述对所述第一可执行程序进行处理得到第二可执行程序的步骤包括:生成所述第一可执行程序对应的反汇编文件;扫描所述反汇编文件确定所述第一可执行程序中的各个第一指令,所述第一指令是所述重定位寄存器的重定位指令;将各个所述第一指令替换为第二指令得到所述第二可执行程序,所述第二指令是无效指令。3.根据权利要求2所述的全局变量的重定位方法,其特征在于,所述确定所述第一可执行程序中各个全局变量的相对地址的步骤包括:根据所述反汇编文件获取每个所述第一指令对应的第一寄存器;在所述反汇编文件中确定每个所述第一指令对应的目标指令,其中,所述第一指令对应的目标指令是向所述第一指令对应的第一寄存器赋值的指令;根据每个所述目标指令获取各个所述全局变量的相对地址。4.根据权利要求2所述的全局变量的重定位方法,其特征在于,所述根据所述第二可执行程序获取所述第二可执行程序中已初始化变量的首地址的第一加载地址的步骤包括:将各个所述相对地址添加至所述第二可执行程序的头部位置得到第三可执行程序;获取所述第二可执行程序中已初始化变量的首地址,并加载所述第三可执行程序得到所述首地址的第一加载地址。5.根据权利要求4所述的全局变量的重定位方法,其特征在于,所述将各个所述相对地址添加至所述第二可执行程序的头部位置得到第三可执行程序的步骤包括:在各个所述相对地址中去除重复的相对地址;将去除重复相对地址的各个所述相对地址...

【专利技术属性】
技术研发人员:张火明
申请(专利权)人:展讯通信深圳有限公司
类型:发明
国别省市:

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

1