[发明专利]一种基于DSP的动态加载方法有效
申请号: | 201711458538.7 | 申请日: | 2017-12-28 |
公开(公告)号: | CN108196905B | 公开(公告)日: | 2019-03-22 |
发明(设计)人: | 韩辉;蒋太金 | 申请(专利权)人: | 北京翼辉信息技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F8/41 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 梁耀文 |
地址: | 100095 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于DSP的动态加载方法,包括ELF文件预处理、ELF文件读取与解析、符号导出、符号重定位和运行模块,其中,ELF文件预处理包括:ELF预处理、在汇编文件中查找符号地址和计算出某个地址对应指令在ELF文件中的位置三个流程。本发明基于CCS编译器实现DSP动态加载的方法解决了B14切换问题;提高可重定位代码执行效率,用于CCS编译器以及GCC编译器所编译的可重定位代码。 | ||
搜索关键词: | 预处理 动态加载 可重定位代码 编译器 读取 地址对应 符号地址 汇编文件 切换问题 三个流程 运行模块 重定位 导出 编译 解析 指令 查找 | ||
【主权项】:
1.一种基于DSP的动态加载方法,其特征在于,包括以下步骤:(1)ELF文件预处理;具体为:(11)反汇编ELF文件,生成汇编文件;(12)定位到汇编文件头;(13)从汇编文件读取一行,判断是否文件结束,若文件结束,则处理结束;否则执行步骤(14);(14)判断其是否为跳转指令匹配正则表达式$(ADDR)CALL PLT_$(FUNC_NAME),如果匹配成功,则说明是跳转指令,执行步骤(15);否则返回到步骤(13);(15)查找目标符号位置在本汇编文件中查找步骤(14)所匹配到的FUNC_NAME字段对应的符号地址;(16)判断目标符号是否在本模块内如果目标符号在本模块内没有找到,则回到步骤(13);否则,执行步骤(17);(17)判断目标地址是否超出相对跳转范围将符号地址减去步骤(14)匹配到的$(ADDR),得到相对跳转偏移,如果偏移超过CALL指令相对跳转的最大值,则返回步骤(13);否则执行步骤(18);(18)计算地址对应的ELF文件位置计算出$(ADDR)地址对应指令在ELF文件中的位置,执行步骤(19);(19)修改地址对应ELF指令根据偏移生成新的“CALL+偏移”指令,修改步骤(18)计算得到的ELF文件位置,更新其内容为新生成的“CALL+偏移”指令;(2)ELF文件读取与解析ELE文件是可执行程序的特有文件格式,里面包含了所有文件执行所需要的相关信息,加载的第一步就是读取和解析文件,建立ELF模块结构;(3)符号导出一个ELF模块需要导出一些符号,给其它模块使用,加载过程需为每个ELF模块建立一个符号表;(4)符号重定位一个ELF模块需要用到其它ELF模块的符号,加载器为每个ELF模块建立一个导入符号表,针对每个外部符号,通过步骤(2)所属方法查找到符号地址,并填写到本模块的导入符号表;(5)运行模块调用ELF格式中记录的初始化函数和模块入口函数。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京翼辉信息技术有限公司,未经北京翼辉信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711458538.7/,转载请声明来源钻瓜专利网。