一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

程序编译和程序加载方法与流程

2022-11-12 19:41:36 来源:中国专利 TAG:

技术特征:
1.一种程序编译方法,其特征在于,包括:获取应用的源代码编译得到的多个目标文件;对所述多个目标文件的代码段和数据段分别进行合并处理,以得到目标代码段和目标数据段;根据所述目标代码段和所述目标数据段中的符号位置,修改所述多个目标文件对应的符号表和重定位表,以得到第一符号表和第一重定位表;从所述第一符号表中,获取所述第一重定位表对应的第二符号表;根据所述目标代码段、所述目标数据段、所述第二符号表及第一重定位表,生成所述应用的可执行文件。2.根据权利要求1所述的方法,其特征在于,在对所述多个目标文件的代码段和数据段分别进行合并处理之前,还包括:对所述多个目标文件进行链接,以得到所述应用的中间文件;从所述中间文件中,获取所述多个目标文件分别对应的代码段和数据段;所述对所述多个目标文件的代码段和数据段分别进行合并处理,以得到目标代码段和目标数据段,包括:根据所述中间文件中代码段之间的链接关系,对所述多个目标文件的代码段进行合并处理,得到所述目标代码段;根据所述中间文件中数据段之间的链接关系,对所述多个目标文件的数据段进行合并处理,得到所述目标数据段。3.根据权利要求2所述的方法,其特征在于,所述从所述中间文件中,获取所述多个目标文件分别对应的代码段和数据段,包括:获取对所述应用的源代码进行编译的编译器标识;利用所述编译器标识在预设的编译器标识与目标文件格式之间的对应关系中进行匹配,以得到所述多个目标文件的目标文件格式;根据所述多个目标文件的目标文件格式,从所述中间文件中获取所述多个目标文件分别对应的代码段和数据段。4.根据权利要求1所述的方法,其特征在于,所述从所述第一符号表中,获取所述第一重定位表对应的第二符号表,包括:根据所述第一重定位表记录的符号之间的依赖关系,确定重定位符号依赖的符号;从所述第一符号表中,获取第一重定位表记录的重定位符号及所述重定位符号依赖的符号对应的符号表,作为所述第二符号表。5.根据权利要求1所述的方法,其特征在于,还包括:根据所述第一符号表记录的符号类型,确定所述应用依赖的未定义符号;从所述多个目标文件对应的字串表中,获取所述未定义符号对应的字符串;对所述未定义符号对应的字符串进行压缩处理,以得到处理后的字串表。6.根据权利要求5所述的方法,其特征在于,所述根据所述目标代码段、所述目标数据段、所述第二符号表及第一重定位表,生成所述应用的可执行文件,包括:将所述第二符号表、第一重定位表以及所述处理后的字串表复制至所述目标代码段和所述目标数据段所在的文件,以得到所述应用的可执行文件。
7.一种程序加载方法,其特征在于,包括:获取应用的可执行文件;对所述可执行文件进行解析,以得到所述可执行文件包含的代码段、数据段、字串表、重定位表及所述重定位表对应的符号表;根据所述字串表、符号表及所述重定位表,对所述代码段中需要重定位的指令进行重定位;基于所述数据段,执行重定位后的指令及所述代码段中无需重定位的指令,以加载所述应用。8.根据权利要求7所述的方法,其特征在于,所述字串表包括对所述应用依赖的未定义符号的字符串压缩处理后的字符串;所述方法还包括:所述根据所述字串表、符号表及所述重定位表,对所述代码段中需要重定位的指令进行重定位,包括:根据所述字串标记录的所述压缩处理后的字符串,通过操作系统查找所述未定义符号对应的代码段的实际加载地址;根据所述未定义符号对应的代码段的实际加载地址及所述符号表,创建新的符号表;根据所述新的符号表及所述重定位表,对所述代码段中需要重定位的指令进行重定位。9.根据权利要求8所述的方法,其特征在于,所述根据所述未定义符号对应的加载地址及所述符号表,创建新的符号表,包括:根据所述符号表中定义符号的名称,通过操作系统查找所述定义符号对应的代码段的实际加载地址;根据所述未定义符号对应的代码段的实际加载地址以及所述定义符号对应的代码段的实际加载地址,修改所述符号表对应符号的偏移地址,以得到所述新的符号表。10.根据权利要求8所述的方法,其特征在于,所述根据所述新的符号表及所述重定位表,对所述代码段中需要重定位的指令进行重定位,包括:根据重定位表中的符号索引,确定重定位符号的名称;根据所述重定位符号的名称,查询所述新的符号表,以得到所述重定位符号对应的代码段的实际加载地址;根据所述重定位表中的重定位类型,利用所述重定位符号对应的代码段的实际加载地址对所述代码段中需要重定位的指令进行重定位。

技术总结
本申请实施例提供一种程序编译和程序加载方法。在本申请实施例中,在应用程序编译时,一方面,对应用源代码编译的多个目标文件的代码段和数据段进行合并处理,得到目标代码段和目标数据段,可减少表头信息;另一方面,仅保留应用加载时所需的重定位表对应的符号表,可减少符号表的空间消耗;因此,有助于减少后续根据目标代码段、目标数据段和重定位表及重定位表对应的符号表,生成的应用的可执行文件的大小,进而有助于降低加载应用时的内存消耗。进而有助于降低加载应用时的内存消耗。进而有助于降低加载应用时的内存消耗。


技术研发人员:万国建
受保护的技术使用者:阿里云计算有限公司
技术研发日:2021.05.10
技术公布日:2022/11/10
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献