一种针对申威架构TLSGD重定位的编译链接方法、装置及存储介质

    公开(公告)号:CN116991478A

    公开(公告)日:2023-11-03

    申请号:CN202311028465.3

    申请日:2023-08-16

    Abstract: 本发明公开了一种针对申威架构TLSGD重定位的编译链接方法、装置及存储介质,编译链接方法包括:判断重定位变量的数量是否超出预设阈值;将线程局部变量的代码转换成TLSGD指令或复合指令;将转换得到的TLSGD指令或复合指令汇编至重定位表;对重定位表中的指令条目进行位置调整;根据完成判断后的重定位表中的TLSGD指令条目,计算TLSGD指令对应的线程局部变量地址在GOT中相对GP的偏移量disp;根据偏移量disp是否在16位二进制表示范围内,确定TLSGD指令或复合指令的偏移量,并回填,得到重定位后的指令。本发明提升了线程私有变量的寻址范围,满足多线程应用程序在申威平台的适配需求,确保应用程序可以正确链接生成可执行文件或库文件。

    一种申威Go编译器基于跳转指令的寻址方法

    公开(公告)号:CN118193059A

    公开(公告)日:2024-06-14

    申请号:CN202410383861.6

    申请日:2024-04-01

    Abstract: 本发明公开了编译器技术领域的一种申威Go编译器基于跳转指令的寻址方法,旨在解决现有技术在性能和效率上有待提升的问题。包括:获取源码,将源码翻译为二进制机器代码,得到待链接的二进制文件;根据待链接的二进制文件计算符号相对于指令所在地址的偏移量;根据偏移量进行带重定位指令的地址回填,完成链接;计算符号相对于指令所在地址的偏移量包括:判断符号类型,若符号是全局符号,则计算其对应的全局符号在全局偏移表GOT中相对的偏移量;否则,则计算其对应的局部符号地址相对的偏移量。本发明无需在函数入口和调用后发射额外指令,同时可以解放一个通用寄存器,通过跳转指令获取当前指令地址,能够有效提高应用程序的执行性能。

Patent Agency Ranking