技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种立即数操作数的编解码方法、系统及存储介质与流程  >  正文

一种立即数操作数的编解码方法、系统及存储介质与流程

  • 国知局
  • 2024-12-26 16:07:32

本发明涉及处理器设计领域,特别是涉及一种立即数操作数的编解码方法、系统及存储介质。

背景技术:

1、指令设计是处理器设计的一个关键模块,当指令设计方案完成调整时,需要编译器能够快速准确提供对应的指令编解码支持。当前在实现对处理器指令编解码支持时,主要依赖开发者人工阅读指令手册,进而开发代码实现,如果指令手册没有更新,或者开发者理解有误,那么最终实现的指令编解码功能容易出错,同时人工开发需要进行开发规划和排期,需要一定的开发时间,无法实现快速支持。

技术实现思路

1、本发明的目的是提供一种立即数操作数的编解码方法、系统及存储介质,能够实现自动生成立即数操作数的编解码函数,加速了编译器的自动生成,也规避了人工手动实现容易出错的问题。

2、为实现上述目的,本发明提供了如下方案:

3、一种立即数操作数的编解码方法,包括:

4、将处理器设计结果文件中的处理器设计信息以结构体和双向链表形式进行表示,并存储在core.so文件中;所述core.so文件用于提供一系列接口;

5、利用操作系统提供动态链接库加载函数对core.so文件进行加载,并将存在磁盘上的静态的core.so文件,加载恢复到内存中;

6、利用c/c++代码对加载后的core.so文件中对外提供的接口进行调用;并将处理器设计结果中的立即数类型操作数通过结构体和双向链表恢复到内存中;

7、逐个遍历立即数类型操作数,生成对应的编码函数;

8、将所有的编码函数集成到llvm编译器源代码中,重新构建llvm编译器;

9、利用重新构建的llvm编译器对立即数进行编码。

10、可选地,所述动态链接库加载函数为linux操作系统提供的动态链接库加载函数dlopen。

11、可选地,所述并将处理器设计结果中的立即数类型操作数通过结构体和双向链表恢复到内存中,具体包括:

12、根据每一个立即数类型操作数创建一个结构体实例,利用结构体实例的成员变量存放操作数的信息;

13、将结构体实例加入到一个双向链表;所述双向链表用于存放操作数;所述双向链表上每一个结点为结构体实例,并对应一个操作数;

14、将双向链表与结构体实例进行关联;并通过c语言赋值语句farm->operands=operandslist完成。

15、可选地,所述逐个遍历立即数类型操作数,生成对应的编码函数,具体包括:

16、以初始化好的farm变量为入口,通过farm->operands获取当前处理器内所有立即数类型操作数列表,并逐个进行遍历和处理;

17、逆序访问每一立即数类型操作数列表中每一个运算,生成所述运算对应的逆运算的c++代码;

18、将每一立即数类型操作数中所有运算对应的c++代码进行拼接,得到对应的编码函数。

19、一种立即数操作数的编解码系统,包括:

20、core.so文件确定模块,用于将处理器设计结果文件中的处理器设计信息以结构体和双向链表形式进行表示,并存储在core.so文件中;所述core.so文件用于提供一系列接口;

21、加载模块,用于利用操作系统提供动态链接库加载函数对core.so文件进行加载,并将存在磁盘上的静态的core.so文件,加载恢复到内存中;

22、调用模块,用于利用c/c++代码对加载后的core.so文件中对外提供的接口进行调用;并将处理器设计结果中的立即数类型操作数通过结构体和双向链表恢复到内存中;

23、编码函数生成模块,用于逐个遍历立即数类型操作数,生成对应的编码函数;

24、llvm编译器重构模块,用于将所有的编码函数集成到llvm编译器源代码中,重新构建llvm编译器;

25、编码模块,用于利用重新构建的llvm编译器对立即数进行编码。

26、一种存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现所述的方法。

27、根据本发明提供的具体实施例,本发明公开了以下技术效果:

28、本发明所提供的一种立即数操作数的编解码方法、系统及存储介质,对处理器设计结果文件进行分析,提取出立即数类型操作数,分析其对应的硬件行为描述,把处理器设计文件中描述的这个硬件行为转换为等价的c++代码,作为反汇编器在反汇编指令时的操作数解码函数;同时对处理器设计文件中描述的这个硬件行为进行逆向推导,推导出其对应的逆向操作,也生成等价的c++代码,作为指令汇编时立即数操作数的编码函数。最终实现自动生成立即数操作数的编解码函数,加速了编译器的自动生成,也规避了人工手动实现容易出错的问题。

技术特征:

1.一种立即数操作数的编解码方法,其特征在于,包括:

2.根据权利要求1所述的一种立即数操作数的编解码方法,其特征在于,所述动态链接库加载函数为linux操作系统提供的动态链接库加载函数dlopen。

3.根据权利要求1所述的一种立即数操作数的编解码方法,其特征在于,所述并将处理器设计结果中的立即数类型操作数通过结构体和双向链表恢复到内存中,具体包括:

4.根据权利要求3所述的一种立即数操作数的编解码方法,其特征在于,所述逐个遍历立即数类型操作数,生成对应的编码函数,具体包括:

5.一种立即数操作数的编解码系统,其特征在于,包括:

6.一种存储介质,其上存储有计算机程序指令,其特征在于,当所述计算机程序指令被处理器执行时实现如权利要求1-4中任一项所述的方法。

技术总结本发明公开一种立即数操作数的编解码方法、系统及存储介质,涉及处理器设计领域,该方法包括将处理器设计信息以结构体和双向链表形式存储在core.so文件中;对core.so文件进行加载,将core.so文件加载恢复到内存中;利用C/C++代码对加载后的core.so文件中对外提供的接口进行调用;并将立即数类型操作数通过结构体和双向链表恢复到内存中;生成编码函数;将所有的编码函数集成到LLVM编译器源代码中,重新构建LLVM编译器;利用重新构建的LLVM编译器对立即数进行编码。本发明能够实现自动生成立即数操作数的编解码函数,加速了编译器的自动生成,也规避了人工手动实现容易出错的问题。技术研发人员:郭学鹏,刘琳,刘子峰受保护的技术使用者:芯易荟(上海)芯片科技有限公司技术研发日:技术公布日:2024/12/12

本文地址:https://www.jishuxx.com/zhuanli/20241216/348247.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。