[发明专利]即时编译方法及设备在审
申请号: | 202111371827.X | 申请日: | 2021-11-18 |
公开(公告)号: | CN114047908A | 公开(公告)日: | 2022-02-15 |
发明(设计)人: | 乔鹏程 | 申请(专利权)人: | 龙芯中科(合肥)技术有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41;G06F9/455 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 屈蓓;黄健 |
地址: | 230088 安徽省合肥市高新*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 即时 编译 方法 设备 | ||
1.一种即时编译方法,其特征在于,应用于coreCLR虚拟机,所述方法包括:
编译链接前获取多条指令信息;
生成并存储所述多条指令信息中的至少一条第一指令信息的第一编码指令,所述第一指令信息的编码长度固定;
若所述多条指令信息中存在至少一条第二指令信息,则将所述第二指令信息添加到跳转列表中,并对所述跳转列表进行编译链接,以确定所述第二指令信息的编码长度,所述第二指令信息的编码长度不固定;
在顺序执行所述多条指令信息的过程中,当待执行的指令信息为所述第一指令信息时,将所述第一指令信息的第一编码指令发射到对应的内存空间中执行;若所述待执行的指令信息为所述第二指令信息时,按照所述第二指令信息的编码长度生成第二编码指令,并将所述第二编码指令发射到对应的内存空间中执行。
2.根据权利要求1所述的方法,其特征在于,所述第一指令信息中不包括目标地址不确定的分支跳转指令,所述第二指令信息中包括目标地址不确定的分支跳转指令。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在进行所述编译链接之前,根据所述第一编码指令的长度申请对应的内存空间;
在生成所述第二编码指令之后,根据所述第二编码指令的长度申请对应的内存空间。
4.根据权利要求2所述的方法,其特征在于,所述第一指令信息包括:存在函数调用的第三指令信息、存在长度大于或等于预设长度阈值的立即数的第四指令信息、所述第一指令信息中除所述第三指令信息和所述第四指令信息之外的第五指令信息,所述方法还包括:
从至少一个预设结构体中确定每条所述指令信息对应的结构体,所述至少一个预设结构体包括以下至少一种:用于存储所述第五指令信息的编码指令的第一结构体、用于存储所述第二指令信息的第二结构体、用于存储所述第三指令信息的编码指令的第三结构体、用于存储所述第四指令信息的编码指令的第四结构体,所述第二结构体、所述第三结构体和所述第四结构体继承所述第一结构体;
将所述多条指令信息分别以对应的结构体存储至发射列表中;
所述顺序执行所述多条指令信息,包括:
按照所述发射列表中的顺序执行所述多条指令信息。
5.根据权利要求4所述的方法,其特征在于,所述将所述多条指令信息分别以对应的结构体存储至发射列表中,包括:
将相关联的至少两条第二指令信息以同一结构体存储至发射列表中,所述结构体的内存大小固定;
将相关联的至少两条第一指令信息的编码指令以同一结构体存储至发射列表中。
6.根据权利要求5所述的方法,其特征在于,所述将相关联的至少两条第一指令信息的编码指令以同一结构体存储至发射列表中,包括:
将构建同一立即数的至少两条第一指令信息的编码指令以同一结构体存储至发射列表中。
7.根据权利要求1所述的方法,其特征在于,所述确定所述第二指令信息的编码长度,包括:
在遍历所述跳转列表的过程中,针对所述跳转列表中的每条所述第二指令信息,确定所述第二指令信息和所述第二指令信息跳转的目标指令信息在所述跳转列表中的地址差;
若所述地址差小于或等于预设地址差阈值,则将所述预设地址差阈值对应的预设编码长度确定为所述第二指令信息的编码长度;
若所述地址差大于预设地址差阈值,则将所述预设地址差阈值对应的预设编码长度增大预设长度之后作为所述第二指令信息的编码长度,并在所述遍历结束之后对所述跳转列表进行再次遍历。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于龙芯中科(合肥)技术有限公司,未经龙芯中科(合肥)技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111371827.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种高强度储气筒
- 下一篇:用于连续轮廓的目标对象检测方法、设备及存储介质