一种针对申威架构GPRL16重定位的编译方法与流程

文档序号:33477998发布日期:2023-03-15 11:01阅读:37来源:国知局
一种针对申威架构gprl16重定位的编译方法
技术领域
:1.本发明属于编译器
技术领域
:,具体涉及申威架构gprl16重定位的编译方法。
背景技术
::2.针对源程序中的全局变量和静态变量,编译器根据目标机器的不同生成对应的重定位类型,便于将其放入可执行和可链接(executableandlinkingformat,elf)格式的数据段或只读数据段中,如x86处理器平台生成pc32重定位,寻址范围为±2gb;ibmz处理器平台生成pc32dbl重定位,寻址范围为±2gb,上述两个处理器平台的重定位是相对pc寻址;而申威处理器平台提供的是一种相对全局指针(globalpointer,gp)进行寻址的gprl16重定位,寻址范围为±32kb。3.随着申威处理器平台的大数据分析与应用、云平台、人工智能等领域各类应用软件功能不断增强,代码逻辑和规模也越加复杂,源码中涉及的全局变量和静态变量的数量也随之增多,编译生成数据段的存储空间也在不断变大,继续使用±32kb寻址范围的gprl16重定位已经不能满足某些特定场景的需求,甚至导致相关应用程序不能正确链接生成可执行文件或库文件。技术实现要素:4.本发明的目的在于提供一种针对申威架构gprl16重定位的编译方法,扩大了全局变量和静态变量的寻址范围,兼顾了功能要求和性能要求。5.为达到上述目的,本发明所采用的技术方案是:6.本发明第一方面提供了一种针对申威架构gprl16重定位的编译方法,包括:7.读取源程序并对源程序进行分析确定变量符号,对变量符号多维度重定位符号分析确定生成的重定位类型;8.对源程序中的变量符号进行数量统计与类型分析,计算出源程序中变量符号占用存储空间大小,确定所述变量符号在数据段中的地址范围;判断变量符号数量是否在gprl16重定位的范围阈值内;9.若未到达gprl16重定位的范围阈值,通过变量符号分析的结果自适应生成存储格式指令a与gprl16重定位;10.若到达gprl16重定位的范围阈值,对变量符号进行重定位扩展与自适应生成存储格式指令b和gphigh重定位、存储格式指令c和gplow重定位;11.将存储格式指令a与gprl16重定位输入至编译器,或者将存储格式指令b和gphigh重定位以及存储格式指令c和gplow重定位输入至编译器生成汇编文件,将汇编文件输入至汇编器转换成目标文件;12.将目标文件输入至链接器计算变量符号地址;将地址偏移回填写入对应的存储格式指令a、存储格式指令b以及存储格式指令c被修正位置,生成可执行文件或库文件。13.优选的,对变量符号多维度重定位符号分析确定生成的重定位类型的方法包括:14.判断源程序中的变量符号类型得出变量的长度;判断变量是全局变量或者静态变量,分析表示该变量符号的位置,确定生成的重定位类型。15.优选的,若未到达gprl16重定位的范围阈值,通过变量符号分析的结果自适应生成存储格式指令a与gprl16重定位的方法包括:16.为变量符号生成一个中间表示语言表达式,并将所述表达式的操作数类型标记为low;17.根据重定位类型生成对应长度的存储格式指令a,判断操作数类型与表达式的标识是否符合生成相对gp重定位类型的条件,如符合则输出gprl16重定位。18.优选的,若操作数类型与表达式的标识不符合生成相对gp重定位类型的条件生成literal重定位;将存储格式指令a与literal重定位输入至编译器生成汇编文件。19.优选的,对变量符号进行重定位扩展与自适应生成存储格式指令b和gphigh重定位、存储格式指令c和gplow重定位的方法包括:20.为变量符号生成两个中间表示语言表达式,并将所述表达式的操作数类型分别标记为high与low;21.根据重定位类型结果将标记为high的表达式通过指令模板匹配生成带有gphigh重定位的存储格式指令b,获取相对gp32位有符号偏移的高16位;22.将标记为low的表达式先通过指令模板匹配生成存储格式指令c;针对标识为low的存储格式指令c,则输出gplow重定位,用于加载相对gp32位有符号偏移的低16位,将偏移范围由有符号16位表示的±32kb扩大到有符号32位表示的±2gb。23.优选的,将目标文件输入至链接器计算变量符号地址;将地址偏移回填写入对应的存储格式指令b以及存储格式指令c被修正位置,生成可执行文件或库文件的方法包括:24.将目标文件输入至链接器解析全局指针,合并变量符号并计算地址,得到变量符号地址rx与全局指针gp;25.计算全局指针gp与变量地址rx的相对偏移,并将相对偏移拆分为高16位偏移disph和低16位偏移dipsl;26.将高16位偏移dipsh写入gphigh标识的存储格式指令b修正处,将低16偏移displ写入gplow标识的存储格式指令c修正处,生成可执行文件或库文件。27.本发明第二方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述编译方法的步骤。28.与现有技术相比,本发明的有益效果:29.本发明针对申威架构gprl16重定位的编译方法,将全局变量或静态变量的寻址范围由原本的±32kb扩大至gphigh+gplow组合的±2gb,解决了大数据分析与应用、云平台领域编译报错的问题;满足了申威处理器平台复杂应用程序特定场景的需求,确保应用程序可以正确链接生成可执行文件或库文件,并且保持原有性能,兼顾了功能要求和性能要求附图说明30.图1是本发明实施例一提供的一种针对申威架构gprl16重定位的编译方法的网络结构。具体实施方式31.下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。32.实施例一33.如图1所示,本发明第一方面提供了一种针对申威架构gprl16重定位的编译方法,包括:34.步骤1,读取源程序并对源程序进行分析确定变量符号,判断源程序中的变量符号类型得出变量的长度;判断变量是全局变量或者静态变量,分析表示该变量符号的位置,确定生成的重定位类型。35.步骤2,对源程序中的变量符号进行数量统计与类型分析,计算出源程序中变量符号占用存储空间大小,确定所述变量符号在数据段中的地址范围;判断变量符号数量是否在gprl16重定位的范围阈值内;36.步骤3,若未到达gprl16重定位的范围阈值,通过变量符号分析的结果自适应生成存储格式指令a与gprl16重定位的方法包括:37.为变量符号生成一个中间表示语言表达式,并将所述表达式的操作数类型标记为low;38.根据重定位类型生成对应长度的存储格式指令a,判断操作数类型与表达式的标识是否符合生成相对gp重定位类型的条件,如符合则输出gprl16重定位;生成指令为:39.loadra,disp(gp)#gprl1640.若操作数类型与表达式的标识不符合生成相对gp重定位类型的条件生成literal重定位;此处需要强调的是不限于literal重定位,也可以生成其他重定位。41.步骤4,若到达gprl16重定位的范围阈值,对变量符号进行重定位扩展与自适应生成存储格式指令b和gphigh重定位、存储格式指令c和gplow重定位的方法包括:42.对变量符号进行重定位扩展与自适应生成存储格式指令b和gphigh重定位、存储格式指令c和gplow重定位的方法包括:43.为变量符号生成两个中间表示语言表达式,并将所述表达式的操作数类型分别标记为high与low;44.根据重定位类型结果将标记为high的表达式通过指令模板匹配生成带有gphigh重定位的存储格式指令b,获取相对gp32位有符号偏移的高16位;45.将标记为low的表达式先通过指令模板匹配生成存储格式指令c;针对标识为low的存储格式指令c,则输出gplow重定位,用于加载相对gp32位有符号偏移的低16位,将偏移范围由有符号16位表示的±32kb扩大到有符号32位表示的±2gb;生成指令为:[0046][0047]将目标文件输入至链接器计算变量符号地址;将存储格式指令a以及gprl16重定位或literal重定位输入至编译器,或者将存储格式指令b和gphigh重定位以及存储格式指令c和gplow重定位输入至编译器生成汇编文件,将汇编文件输入至汇编器转换成目标文件;[0048]步骤5,将目标文件输入至链接器计算变量符号地址;将地址偏移回填写入对应的存储格式指令a被修正位置,生成可执行文件或库文件。[0049]或者将地址偏移回填写入对应的存储格式指令b以及存储格式指令c被修正位置,生成可执行文件或库文件的方法包括:[0050]将目标文件输入至链接器解析全局指针,合并变量符号并计算地址,得到变量符号地址rx与全局指针gp;[0051]计算全局指针gp与变量地址rx的相对偏移,并将相对偏移拆分为高16位偏移disph和低16位偏移dipsl;表达公式为:[0052][0053]将高16位偏移dipsh写入gphigh标识的存储格式指令b修正处,将低16偏移displ写入gplow标识的存储格式指令c修正处,生成可执行文件或库文件。[0054]实施例二[0055]一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现实施例一所述编译方法的步骤。[0056]本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0057]本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0058]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0059]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0060]以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1