-
公开(公告)号: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指令或复合指令的偏移量,并回填,得到重定位后的指令。本发明提升了线程私有变量的寻址范围,满足多线程应用程序在申威平台的适配需求,确保应用程序可以正确链接生成可执行文件或库文件。
-
公开(公告)号:CN118193059A
公开(公告)日:2024-06-14
申请号:CN202410383861.6
申请日:2024-04-01
Applicant: 无锡先进技术研究院
Abstract: 本发明公开了编译器技术领域的一种申威Go编译器基于跳转指令的寻址方法,旨在解决现有技术在性能和效率上有待提升的问题。包括:获取源码,将源码翻译为二进制机器代码,得到待链接的二进制文件;根据待链接的二进制文件计算符号相对于指令所在地址的偏移量;根据偏移量进行带重定位指令的地址回填,完成链接;计算符号相对于指令所在地址的偏移量包括:判断符号类型,若符号是全局符号,则计算其对应的全局符号在全局偏移表GOT中相对的偏移量;否则,则计算其对应的局部符号地址相对的偏移量。本发明无需在函数入口和调用后发射额外指令,同时可以解放一个通用寄存器,通过跳转指令获取当前指令地址,能够有效提高应用程序的执行性能。
-