[发明专利]一种IL指令运行时的动态特例化方法和装置在审
申请号: | 202210079062.0 | 申请日: | 2022-01-24 |
公开(公告)号: | CN114443052A | 公开(公告)日: | 2022-05-06 |
发明(设计)人: | 黄强;李建良;郭子文 | 申请(专利权)人: | 在线途游(北京)科技有限公司;北京云游互动网络科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/65 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100012 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 il 指令 运行 动态 特例 方法 装置 | ||
本申请提供了一种IL指令运行时的动态特例化方法、装置、计算设备和计算机可读存储介质,该方法在IL动态指令第一次执行时将指令执行需要的实际地址保存下来,并将指令修改为解释器可以识别的特例化后的指令。当解释器下一次执行该指令时,根据特例化后的指令直接调用实际地址,无需进行查询的动作,从而提升了解释器的执行速度,进而提高了热更新的效率。
技术领域
本申请涉及计算机编译技术领域,特别涉及一种IL指令运行时的动态特例化方法、装置、计算设备和计算机可读存储介质。
背景技术
在移动互联网领域,通常使用热更新的方式来实现APP的功能更新或Bug修复,用户打开APP时即可实现更新,不用重新下载整个APP,从而实现了良好的用户体验。现有技术中,一种流行的方案是基于C#的热更新方案,该方案利用解释器执行热更新部分动态库中的IL指令来实现热更新。由于IL指令中有大量指令依赖于运行时阶段的查询步骤,较为费时,导致解释器的运行效率较低,热更新的速度较慢。
发明内容
有鉴于此,本申请例提供了一种IL指令运行时的动态特例化方法、装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种IL指令运行时的动态特例化方法,包括:
使用解释器对动态库中的IL语言进行解释执行;
当IL指令集中的动态指令第一次被执行时,获取并保存该动态指令参数所对应的实际地址p;
将动态指令的参数替换为所述实际地址p;
将动态指令修改为特例化后的指令,当解释器下一次执行到所述指令时直接调用所述实际地址p。
根据本申请实施例的第二方面,提供了一种IL指令运行时的动态特例化装置,包括:
指令执行单元,用于对动态库中的IL语言进行解释执行;
保存单元,用于当IL指令集中的动态指令第一次被执行时,获取并保存该动态指令参数所对应的实际地址p;
替换单元,用于将动态指令的参数替换为所述实际地址p;
编辑单元,将动态指令修改为特例化后的指令;
当所述指令执行单元非首次执行所述动态指令时直接调用所述实际地址p。
根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述IL指令运行时的动态特例化方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述IL指令运行时的动态特例化方法的步骤。
通过本申请实施例中的方法和装置,对IL2CPP的结构进行改进,将一个仅支持AOT静态编译的运行时改造为一个支持AOT+解释器的运行时,实现了跨平台的高效热更新方案的基础,并对解释器运行方式进行了优化。当IL动态指令第一次执行时,将指令执行需要的实际地址保存下来,并对指令的ID进行修改,修改为解释器可以识别的特例化后的指令。当解释器下一次执行该指令时,根据特例化后的指令直接调用实际地址,无需进行查询的动作,从而提升了解释器的执行速度,进而提高了热更新的效率。
附图说明
图1是本申请实施例提供的计算设备的结构框图;
图2是本申请实施例提供的IL指令运行时的动态特例化方法的一流程示意图;
图3是本申请实施例提供的IL指令运行时的动态特例化方法中对指令参数进行替换的一示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于在线途游(北京)科技有限公司;北京云游互动网络科技有限公司,未经在线途游(北京)科技有限公司;北京云游互动网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210079062.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:扇形齿轮加工方法及扇形齿轮
- 下一篇:一种聚醚醚酮的合成方法