【技术实现步骤摘要】
程序执行方法、装置、电子设备和可读存储介质
[0001]本申请涉及计算机
,尤其涉及一种程序执行方法、装置、电子设备和可读存储介质。
技术介绍
[0002]在嵌入式系统中,在nor
‑
flash上执行的内核程序的运行位置是固定的,这个运行位置在链接阶段,由链接脚本定义。内核程序只能下载到链接脚本中的指定位置,进而才能被执行。
技术实现思路
[0003]本申请实施例提供一种程序执行方法、装置、电子设备和可读存储介质,可以将目标程序下载到任意位置,实现程序运行的位置无关性。
[0004]第一方面,本申请实施例提供了一种程序执行方法,所述方法包括:获取目标程序的指定运行地址和目标运行地址,计算所述指定运行地址与所述目标运行地址之间的偏移值,若所述偏移值不等于0,则从预设的重定位表中获取重定位符号的第一变量,所述第一变量用于指示所述重定位符号在全局偏移表中的表项,基于所述第一变量从所述全局偏移表中获取所述重定位符号的初始内存地址,根据所述初始内存地址和偏移值计算所述重定位符号的目标地址 ...
【技术保护点】
【技术特征摘要】
1.一种程序执行方法,其特征在于,所述方法包括:获取目标程序的指定运行地址和目标运行地址;计算所述指定运行地址与所述目标运行地址之间的偏移值;若所述偏移值不等于0,则从预设的重定位表中获取重定位符号的第一变量,所述第一变量用于指示所述重定位符号在全局偏移表中的表项;基于所述第一变量从所述全局偏移表中获取所述重定位符号的初始内存地址;根据所述初始内存地址和偏移值计算所述重定位符号的目标地址,并基于所述目标地址更新所述重定位符号在所述全局偏移表中的值;根据更新后的全局偏移表执行所述目标程序。2.根据权利要求1所述的方法,其特征在于,所述基于所述第一变量从所述全局偏移表中获取所述重定位符号的初始内存地址之前,所述方法还包括:若所述重定位符号的数据类型为第一数据类型,则从所述重定位表中获取所述重定位符号的第二变量,所述第二变量为所述重定位符号在所述重定位表中的值;根据所述第二变量和所述偏移值更新所述第一变量,其中,更新后的第一变量为所述第二变量与所述偏移值之和;所述基于所述第一变量从所述全局偏移表中获取所述重定位符号的初始内存地址,包括:基于所述更新后的第一变量从所述全局偏移表中获取所述重定位符号的初始内存地址。3.根据权利要求1所述的方法,其特征在于,所述基于所述第一变量从所述全局偏移表中获取所述重定位符号的初始内存地址,包括:若所述重定位符号的数据类型为第二数据类型,则根据所述第一变量和所述偏移值从全局偏移表中获取所述重定位符号的初始内存地址;所述初始内存地址为在全局偏移表中所述第一变量与所述偏移值之和所对应的表项中记录的地址。4.根据权利要求1所述的方法,其特征在于,所述从预设的重定位表中获取重定位符号的第一变量之前,所述方法还包括:获取重定位表的第一存储地址和第一加载地址,以及全局偏移表的第二存储地址和第二加载地址;根据所述第一存储地址获取所述重定位表,并以所述第一加载地址为起始地址,将所述重定位表加载至静态存储器中;根据所述第二存储地址获取所全局偏移表,并以所述第二加载地址为起始地址,将所述全局偏移表加载至所述静态存储器中。5.根据权利要求4所述的方法,其特征在于,所述获取重定位表的第一存储地址和第一加载地址,以及全局偏移表的第二存储地址和第二加载地址之前,所述方法还包括:根据重定位表的第一存储地址生成第一指针变量,所述第一指针变量用于指示所述第一存储地址;根据所述重定位表的第一加载地址生成第二指针变量,所述第二指针变量用于指示所述第一加载地址;根据...
【专利技术属性】
技术研发人员:杨晓君,
申请(专利权)人:北京奕斯伟计算技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。