The present invention provides a method of loading, dynamic program modules including: step one, provide the compiler system for program source code can be dynamically loaded modules, program modules include binary code and data segments; step two, provide dynamic loader, dynamic loader includes a program module to the mounting module the program module of storage space, and at run time for the loading module program module loaded into the runtime data storage space; binary code, step three program module through the runtime data storage module data storage space in the base address mapping table to calculate global variables in the program source address; step four, read write and quote global variables global variables corresponding to the address. The invention can avoid the operation of backup, erasing, merging and writing of the storage space when re positioning, and improve the efficiency of the dynamic loading.
【技术实现步骤摘要】
一种程序模块动态装载方法
本专利技术涉及计算机软件
,尤其涉及一种程序模块动态装载方法。
技术介绍
动态装载技术能够使得大型程序调用不属于其可执行代码的函数,更新应用于各个模块,而不会影响该程序的其他部分,从而节约应用程序所需的磁盘和内存空间。目前,动态装载技术在PC机上已经有标准化方法,例如Windows平台的动态链接库(DLL)文件装载技术,以及Linux平台的共享库(SO)文件装载技术。通过运行于对应操作系统上的动态装载器,可以识别、装载、运行这些可动态装载的文件。动态装载器通过读取程序模块中的描述信息,为程序模块分配运行内存,将程序装载到内存中,然后读取程序模块中的重定位信息,根据程序模块实际运行地址将程序进行重定位,最终将程序模块运行起来。但是,在大部分嵌入式系统中,由于其存储资源有限,一般要求程序的代码段和只读数据段存放在例如Flash的只读掉电存储器中直接执行,同时将可读写的数据段拷贝到RAM中。由于数据段只有在程序模块被装载运行时才能确定其地址,要在嵌入式系统中实现程序模块的动态装载,现有技术中通常在程序模块被装载运行时根据数据段地址对代码段 ...
【技术保护点】
一种程序模块动态装载方法,其特征在于,包括:步骤一、提供编译系统,用于将程序源码编译生成可动态装载的程序模块,所述程序模块包括二进制代码段和数据段;步骤二、提供动态装载器,所述动态装载器包括用于将所述程序模块安装到程序模块存储空间的安装模块,以及用于在运行时将所述程序模块装载到运行时数据存储空间的装载模块;步骤三、所述程序模块的二进制代码段通过所述运行时数据存储空间中的程序模块数据段基地址映射表计算所述程序源码中的全局变量地址;步骤四、读写并引用所述全局变量地址对应的全局变量。
【技术特征摘要】
1.一种程序模块动态装载方法,其特征在于,包括:步骤一、提供编译系统,用于将程序源码编译生成可动态装载的程序模块,所述程序模块包括二进制代码段和数据段;步骤二、提供动态装载器,所述动态装载器包括用于将所述程序模块安装到程序模块存储空间的安装模块,以及用于在运行时将所述程序模块装载到运行时数据存储空间的装载模块;步骤三、所述程序模块的二进制代码段通过所述运行时数据存储空间中的程序模块数据段基地址映射表计算所述程序源码中的全局变量地址;步骤四、读写并引用所述全局变量地址对应的全局变量。2.根据权利要求1所述的方法,其特征在于,所述程序模块存储空间划分为大小相等的存储块,并以存储块大小对齐的方式存放所述程序模块的二进制代码段和数据段。3.根据权利要求2所述的方法,其特征在于,所述装载模块在所述运行时数据存储空间中为所述程序模块分配用于存放运行时数据段的运行时数据存储空间。4.根据权利要求2所述的方法,其特征在于,所述程序模块数据段基地址映射表中的每个表项对应一个程序模块存储空间中的所述存储块以及所述存储块的存储块索引号。5.根据权利要求4所述的方法,其特征在于,所述存储块索引号Imodule通过下式Imodule=(ADDRblock-Bflash)>>log2(Sblock)计算而得,其中ADDRblock为程序模块所占用的存储块基地址,Sblock为存储块大小,Bflash为程序模块存储空间基地址。6.根据权利要求1所述的方法,其特征在于,所述步骤三包括通过计算式:ADDRv...
【专利技术属性】
技术研发人员:修志芳,李春强,尚云海,童琪杰,陈林飞,
申请(专利权)人:杭州中天微系统有限公司,
类型:发明
国别省市:浙江,33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。