The invention discloses a loading method, device, computer equipment and storage medium of an application program, which belongs to the field of computer technology. The methods include: mapping the application to the memory buffer, the value of each bit in the memory buffer is the first value; changing the relocation address in the application's relocation table to the value of the corresponding bit in the memory buffer to the second value; and when loading the application, changing the address of the application to the second value. When the value of the corresponding bit mapped to the memory buffer is the first value, the application is loaded according to the address; when the value of the corresponding bit mapped to the memory buffer is the second value, the address is relocated, and the application is loaded according to the relocated address. When the application program is loaded, the invention can quickly determine whether the address needs to be relocated, the time consumed is greatly reduced, and the efficiency is obviously improved.
【技术实现步骤摘要】
应用程序的加载方法、装置、计算机设备及存储介质
本专利技术涉及计算机
,尤其涉及一种应用程序的加载方法、装置、计算机设备及存储介质。
技术介绍
链接器在生成一个应用程序的可执行文件时,会设置该可执行文件被加载时的默认基地址,应用程序的默认基地址一般被设置为0x00400000h,动态链接库的默认基地址一般被设置为0x10000000。在加载应用程序时,应用程序中的一个动态链接库被加载到内存中时,会被优先加载到默认基地址,如果该动态链接库加载时的默认基地址与其它动态链接库的基地址发生冲突,如该默认基地址已分配给其他动态链接库,则需要对该动态链接库的基地址进行重定位,以实现应用程序的正常加载和运行。目前,在加载应用程序过程中,当判断一个地址是否需要重定位时,需要用到重定位表,重定位表里记录了应用程序的哪些地址需要重定位(重定位地址)以及如何进行重定位的信息。计算机设备可以采用循环查找或者排序查找的方法,循环查找是指枚举重定位表,也即是,将重定位表中所有的重定位地址列出来存储,每判断一个地址是否需要重定位,则循环一次存储了重定位地址的数据结构,如果该地址在该数据结构中,则确定该地址需要重定位,如果该地址不在该数据结构中,则确定该地址不需要重定位。排序查找是指先枚举重定位表,再对重定位表中的重定位地址进行排序,每判断一个地址是否需要重定位,则二分查找一次存储了重定位地址的数据结构。在实现本专利技术的过程中,专利技术人发现相关技术至少存在以下问题:在加载应用程序时,需要枚举重定位表,每判断一个地址是否需要重定位时,则需要查询存储了重定位地址的数据结构,复杂度高 ...
【技术保护点】
1.一种应用程序的加载方法,其特征在于,所述方法包括:将应用程序映射到内存缓冲区,所述应用程序的镜像大小是所述内存缓冲区的大小的预设倍数,所述内存缓冲区的每个比特位的取值为第一数值;将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值,所述重定位地址是指需要重定位的地址;在加载所述应用程序时,当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第一数值时,按照所述地址进行所述应用程序的加载;当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第二数值时,对所述地址进行重定位后,按照重定位后的地址进行所述应用程序的加载。
【技术特征摘要】
1.一种应用程序的加载方法,其特征在于,所述方法包括:将应用程序映射到内存缓冲区,所述应用程序的镜像大小是所述内存缓冲区的大小的预设倍数,所述内存缓冲区的每个比特位的取值为第一数值;将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值,所述重定位地址是指需要重定位的地址;在加载所述应用程序时,当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第一数值时,按照所述地址进行所述应用程序的加载;当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第二数值时,对所述地址进行重定位后,按照重定位后的地址进行所述应用程序的加载。2.根据权利要求1所述的方法,其特征在于,所述将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值,包括:将所述重定位地址除以所述预设倍数,确定所述重定位地址映射到所述内存缓冲区的对应比特位;将所述重定位地址的对应比特位的取值从所述第一数值更改为所述第二数值。3.根据权利要求1所述的方法,其特征在于,所述当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第一数值时,按照所述地址进行所述应用程序的加载,包括:将所述地址除以所述预设倍数,确定所述地址映射到所述内存缓冲区的对应比特位;当所述地址的对应比特位的取值为所述第一数值时,按照所述地址进行所述应用程序的加载。4.根据权利要求1所述的方法,其特征在于,所述将应用程序映射到内存缓冲区之前,所述方法还包括:获取所述应用程序的镜像大小;根据所述应用程序的镜像大小,在内存中为所述应用程序分配所述内存缓冲区;将所述内存缓冲区的每个比特位的取值初始化为所述第一数值。5.根据权利要求1所述的方法,其特征在于,所述将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值之前,所述方法还包括:解析所述应用程序的所述重定位表,得到所述重定位地址。6.一种应用程序的加载装置,其特征在于,所述装置包括:映射模块,用于将应用程序映射到内存缓冲区,所述应用程序的镜像大...
【专利技术属性】
技术研发人员:陈小虎,
申请(专利权)人:深圳市腾讯网络信息技术有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。