-
公开(公告)号:CN115794058A
公开(公告)日:2023-03-14
申请号:CN202211533231.X
申请日:2022-12-02
Applicant: 无锡先进技术研究院
Abstract: 本发明公开了一种针对申威架构GPRL16重定位的编译方法,包括:读取源程序并对源程序进行分析确定变量符号;判断变量符号数量是否在GPRL16重定位的范围阈值内;若未到达GPRL16重定位的范围阈值,通过变量符号分析的结果自适应生成存储格式指令A与GPRL16重定位;若到达GPRL16重定位的范围阈值,对变量符号进行重定位扩展与自适应生成存储格式指令B和GPHIGH重定位、存储格式指令C和GPLOW重定位;在编译器生成汇编文件,将汇编文件输入至汇编器转换成目标文件;将目标文件输入至链接器计算变量符号地址;将地址偏移回填写入对应的存储格式指令被修正位置,生成可执行文件或库文件;扩大了全局变量和静态变量的寻址范围,兼顾了功能要求和性能要求。
-
公开(公告)号:CN116991478A
公开(公告)日:2023-11-03
申请号:CN202311028465.3
申请日:2023-08-16
Applicant: 无锡先进技术研究院
IPC: G06F9/30 , G06F8/41 , G06F8/73 , G06F8/30 , G06F40/151
Abstract: 本发明公开了一种针对申威架构TLSGD重定位的编译链接方法、装置及存储介质,编译链接方法包括:判断重定位变量的数量是否超出预设阈值;将线程局部变量的代码转换成TLSGD指令或复合指令;将转换得到的TLSGD指令或复合指令汇编至重定位表;对重定位表中的指令条目进行位置调整;根据完成判断后的重定位表中的TLSGD指令条目,计算TLSGD指令对应的线程局部变量地址在GOT中相对GP的偏移量disp;根据偏移量disp是否在16位二进制表示范围内,确定TLSGD指令或复合指令的偏移量,并回填,得到重定位后的指令。本发明提升了线程私有变量的寻址范围,满足多线程应用程序在申威平台的适配需求,确保应用程序可以正确链接生成可执行文件或库文件。
-