即时编译方法及设备技术

技术编号:32339080 阅读:14 留言:0更新日期:2022-02-16 18:47
本发明专利技术提供一种即时编译方法及设备。该方法包括:获取多条指令信息;生成并存储至少一条第一指令信息的第一编码指令,该第一指令信息中的编码长度固定;若存在至少一条第二指令信息,则将第二指令信息添加到跳转列表中,并对跳转列表进行编译链接,以确定第二指令信息的编码长度,第二指令信息的编码长度不固定;在顺序执行多条指令信息的过程中,当待执行的指令信息为第一指令信息时,将第一指令信息的第一编码指令发射到内存空间中执行;当待执行的指令信息为第二指令信息时,按照第二指令信息的编码长度生成第二编码指令,并发射到内存空间中执行。本发明专利技术实施例可以降低执行指令的时延。时延。时延。

【技术实现步骤摘要】
即时编译方法及设备


[0001]本专利技术涉及计算机
,尤其涉及一种即时编译方法及设备。

技术介绍

[0002]coreCLR(core common language running,核心公共语言运行时)是一种开源框架,用于为虚拟机的运行过程提供组件,这种通过coreCLR提供的组件运行的虚拟机可以称为coreCLR虚拟机。coreCLR可以运行于各种操作系统的虚拟机上,例如,windows的虚拟机、linux的虚拟机、mac的虚拟机等。coreCLR虚拟机在接收到指令信息时,通过JIT(Just In Time,即时)编译器对指令信息进行二进制编码得到编码指令,在编码之后立即执行该编码指令。
[0003]从而,如何降低执行指令的时延成为亟待解决的问题。

技术实现思路

[0004]本专利技术提供一种即时编译方法及设备,用以降低执行指令的时延。
[0005]第一方面,本专利技术提供一种即时编译方法,应用于coreCLR虚拟机,所述方法包括:
[0006]编译链接前获取多条指令信息;
[0007]生成并存储所述多条指令信息中的至少一条第一指令信息的第一编码指令,所述第一指令信息的编码长度固定;
[0008]若所述多条指令信息中存在至少一条第二指令信息,则将所述第二指令信息添加到跳转列表中,并对所述跳转列表进行编译链接,以确定所述第二指令信息的编码长度,所述第二指令信息的编码长度不固定;
[0009]在顺序执行所述多条指令信息的过程中,当待执行的指令信息为所述第一指令信息时,将所述第一指令信息的第一编码指令发射到对应的内存空间中执行;若所述待执行的指令信息为所述第二指令信息时,按照所述第二指令信息的编码长度生成第二编码指令,并将所述第二编码指令发射到对应的内存空间中执行。
[0010]可选地,所述第一指令信息中不包括目标地址不确定的分支跳转指令,所述第二指令信息中包括目标地址不确定的分支跳转指令。
[0011]可选地,所述方法还包括:
[0012]在进行所述编译链接之前,根据所述第一编码指令的长度申请对应的内存空间;
[0013]在生成所述第二编码指令之后,根据所述第二编码指令的长度申请对应的内存空间。
[0014]可选地,所述第一指令信息包括:存在函数调用的第三指令信息、存在长度大于或等于预设长度阈值的立即数的第四指令信息、所述第一指令信息中除所述第三指令信息和所述第四指令信息之外的第五指令信息,所述方法还包括:
[0015]从至少一个预设结构体中确定每条所述指令信息对应的结构体,所述至少一个预设结构体包括以下至少一种:用于存储所述第五指令信息的编码指令的第一结构体、用于
存储所述第二指令信息的第二结构体、用于存储所述第三指令信息的编码指令的第三结构体、用于存储所述第四指令信息的编码指令的第四结构体,所述第二结构体、所述第三结构体和所述第四结构体继承所述第一结构体;
[0016]将所述多条指令信息分别以对应的结构体存储至发射列表中;
[0017]所述顺序执行所述多条指令信息,包括:
[0018]按照所述发射列表中的顺序执行所述多条指令信息。
[0019]可选地,所述将所述多条指令信息分别以对应的结构体存储至发射列表中,包括:
[0020]将相关联的至少两条第二指令信息以同一结构体存储至发射列表中,所述结构体的内存大小固定;
[0021]将相关联的至少两条第一指令信息的编码指令以同一结构体存储至发射列表中。
[0022]可选地,所述将相关联的至少两条第一指令信息的编码指令以同一结构体存储至发射列表中,包括:
[0023]将构建同一立即数的至少两条第一指令信息的编码指令以同一结构体存储至发射列表中。
[0024]可选地,所述确定所述第二指令信息的编码长度,包括:
[0025]在遍历所述跳转列表的过程中,针对所述跳转列表中的每条所述第二指令信息,确定所述第二指令信息和所述第二指令信息跳转的目标指令信息在所述跳转列表中的地址差;
[0026]若所述地址差小于或等于预设地址差阈值,则将所述预设地址差阈值对应的预设编码长度确定为所述第二指令信息的编码长度;
[0027]若所述地址差大于预设地址差阈值,则将所述预设地址差阈值对应的预设编码长度增大预设长度之后作为所述第二指令信息的编码长度,并在所述遍历结束之后对所述跳转列表进行再次遍历。
[0028]第二方面,本专利技术提供一种电子设备,包括:
[0029]指令信息获取模块,用于编译链接前获取多条指令信息;
[0030]第一编码指令存储模块,用于生成并存储所述多条指令信息中的至少一条第一指令信息的第一编码指令,所述第一指令信息的编码长度固定;
[0031]编码长度确定模块,用于若所述多条指令信息中存在至少一条第二指令信息,则将所述第二指令信息添加到跳转列表中,并对所述跳转列表进行编译链接,以确定所述第二指令信息的编码长度,所述第二指令信息的编码长度不固定;
[0032]编码指令执行模块,用于在顺序执行所述多条指令信息的过程中,当待执行的指令信息为所述第一指令信息时,将所述第一指令信息的第一编码指令发射到对应的内存空间中执行;若所述待执行的指令信息为所述第二指令信息时,按照所述第二指令信息的编码长度生成第二编码指令,并将所述第二编码指令发射到对应的内存空间中执行。
[0033]可选地,所述第一指令信息中不包括目标地址不确定的分支跳转指令,所述第二指令信息中包括目标地址不确定的分支跳转指令。
[0034]可选地,所述装置还包括:
[0035]第一内存申请模块,用于在进行所述编译链接之前,根据所述第一编码指令的长度申请对应的内存空间;
[0036]第二内存申请模块,用于在生成所述第二编码指令之后,根据所述第二编码指令的长度申请对应的内存空间。
[0037]可选地,所述第一指令信息包括:存在函数调用的第三指令信息、存在长度大于或等于预设长度阈值的立即数的第四指令信息、所述第一指令信息中除所述第三指令信息和所述第四指令信息之外的第五指令信息,所述装置还包括:
[0038]结构体确定模块,用于从至少一个预设结构体中确定每条所述指令信息对应的结构体,所述至少一个预设结构体包括以下至少一种:用于存储所述第五指令信息的编码指令的第一结构体、用于存储所述第二指令信息的第二结构体、用于存储所述第三指令信息的编码指令的第三结构体、用于存储所述第四指令信息的编码指令的第四结构体,所述第二结构体、所述第三结构体和所述第四结构体继承所述第一结构体;
[0039]结构体存储模块,用于将所述多条指令信息分别以对应的结构体存储至发射列表中;
[0040]所述编码指令执行模块还用于:
[0041]按照所述发射列表中的顺序执行所述多条指令信息。
[0042]可选地,所述结构体存储模块还用于:
[0043]将相关联的至少两条第二本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种即时编译方法,其特征在于,应用于coreCLR虚拟机,所述方法包括:编译链接前获取多条指令信息;生成并存储所述多条指令信息中的至少一条第一指令信息的第一编码指令,所述第一指令信息的编码长度固定;若所述多条指令信息中存在至少一条第二指令信息,则将所述第二指令信息添加到跳转列表中,并对所述跳转列表进行编译链接,以确定所述第二指令信息的编码长度,所述第二指令信息的编码长度不固定;在顺序执行所述多条指令信息的过程中,当待执行的指令信息为所述第一指令信息时,将所述第一指令信息的第一编码指令发射到对应的内存空间中执行;若所述待执行的指令信息为所述第二指令信息时,按照所述第二指令信息的编码长度生成第二编码指令,并将所述第二编码指令发射到对应的内存空间中执行。2.根据权利要求1所述的方法,其特征在于,所述第一指令信息中不包括目标地址不确定的分支跳转指令,所述第二指令信息中包括目标地址不确定的分支跳转指令。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:在进行所述编译链接之前,根据所述第一编码指令的长度申请对应的内存空间;在生成所述第二编码指令之后,根据所述第二编码指令的长度申请对应的内存空间。4.根据权利要求2所述的方法,其特征在于,所述第一指令信息包括:存在函数调用的第三指令信息、存在长度大于或等于预设长度阈值的立即数的第四指令信息、所述第一指令信息中除所述第三指令信息和所述第四指令信息之外的第五指令信息,所述方法还包括:从至少一个预设结构体中确定每条所述指令信息对应的结构体,所述至少一个预设结构体包括以下至少一种:用于存储所述第五指令信息的编码指令的第一结构体、用于存储所述第二指令信息的第二结构体、用于存储所述第三指令信息的编码指令的第三结构体、用于存储所述第四指令信息的编码指令的第四结构体,所述第二结构体、所述第三结构体和所述第四结构体继承所述第一结构体;将所述多条指令信息分别以对应的结构体存储至发射列表中;所述顺序执行所述多条指令信息,包括:按照所述发射列表中的顺序执行所述多条指令信息。5.根据权利要求4所述的方法,其特征在于,所述将所述多条指令信息分别以对应的结构体存储至发射列表中,包括:将相关联的至少两条第二指令信息以同一结构体存储至发射列表中,所述结构体的内存大小固定;将相关联的至少两条第一指令信息的编码指令以同一结构体存储至发射列表中。6.根据权利要求5所述的方法,其特征在于,所述将相关联的至少两条第一指令信息的编...

【专利技术属性】
技术研发人员:乔鹏程
申请(专利权)人:龙芯中科合肥技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1