一种IL指令的静态优化方法和装置制造方法及图纸

技术编号:33392504 阅读:10 留言:0更新日期:2022-05-11 23:10
本申请提供了一种IL指令的静态优化方法、装置、计算设备和计算机可读存储介质,该方法对解释器运行方式进行了优化,当热更新程序集被加载到运行时后,获取函数的元数据信息并解析其中的指令,根据指令的上下文信息将多功能指令转换为确定性的指令,并对解释器进行了改进,重新实现了一个基于转换过的指令的解释器,从而提升了解释器的执行速度,进而提高了热更新的效率。热更新的效率。热更新的效率。

【技术实现步骤摘要】
一种IL指令的静态优化方法和装置


[0001]本申请涉及计算机编译
,特别涉及一种IL指令的静态 优化方法、装置、计算设备和计算机可读存储介质。

技术介绍

[0002]在移动互联网领域,通常使用热更新的方式来实现APP的功能 更新或Bug修复,用户打开APP时即可实现更新,不用重新下载整 个APP,从而实现了良好的用户体验。现有技术中,一种流行的方案 是基于C#的热更新方案,该方案利用解释器执行热更新部分动态库 中的IL指令来实现热更新。由于IL指令集中的多个指令是运行时上 下文相关指令,如在运行时根据操作的数据类型决定执行何种操作。 但IL字节码中的函数实际上又是静态的,编译完成后,某条指令应 该操作什么类型的数据是确定的,无需等到运行时再去判定,这不仅 增加了运行判定和跳转时间,还额外增加了维护数据栈的数据类型的 成本。

技术实现思路

[0003]有鉴于此,本申请例提供了一种IL指令的静态优化方法、装置、 计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
[0004]根据本申请实施例的第一方面,提供了一种IL指令的静态优化 方法,包括:
[0005]加载程序集到运行时,获取程序集中的代码;
[0006]解析所述代码中函数的静态指令,确定所述静态指令中每条指令 的上下文信息;
[0007]根据所述指令的上下文信息,将所述指令转换为确定性的指令;
[0008]在优化后的解释器中,对转换后的确定性的指令进行解释执行。
[0009]根据本申请实施例的第二方面,提供了一种IL指令的静态优化 装置,包括:
[0010]加载单元,用于加载程序集到运行时,获取程序集中的代码;
[0011]解析单元,用于解析所述代码中函数的静态指令,确定所述静态 指令中每条指令的上下文信息;
[0012]转换单元,用于根据所述指令的上下文信息,将所述指令转换为 确定性的指令;
[0013]执行单元,用于在优化后的解释器中,对转换后的确定性的指令 进行解释执行。
[0014]根据本申请实施例的第三方面,提供了一种计算设备,包括存储 器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所 述处理器执行所述指令时实现所述IL指令的静态优化方法的步骤。
[0015]根据本申请实施例的第四方面,提供了一种计算机可读存储介质, 其存储有计算机指令,该指令被处理器执行时实现所述IL指令的静 态优化方法的步骤。
[0016]通过本申请实施例中的方法和装置,对IL2CPP的结构进行改进, 将一个仅支持AOT静态编译的运行时改造为一个支持AOT+解释器 的运行时,实现了跨平台的高效热更新方案的基础,并对解释器运行 方式进行了优化。当热更新程序集被加载到运行时后,获取函数的元 数据信息并解析其中的指令,根据指令的上下文信息将多功能指令转 换为确定
性的指令,并对解释器进行了改进,重新实现了一个基于转 换过的指令的解释器,从而提升了解释器的执行速度,进而提高了热 更新的效率。
附图说明
[0017]图1是本申请实施例提供的计算设备的结构框图;
[0018]图2是本申请实施例提供的IL指令的静态优化方法的一流程示 意图;
[0019]图3是本申请实施例提供的IL指令的静态优化方法中对指令进 行替换的一示意图;
[0020]图4是本申请实施例提供的IL指令的静态优化装置的结构示意 图。
具体实施方式
[0021]在下面的描述中阐述了很多具体细节以便于充分理解本申请。但 是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术 人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受 下面公开的具体实施的限制。
[0022]在本申请一个或多个实施例中使用的术语是仅仅出于描述特定 实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一 个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、
ꢀ“
所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他 含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或
”ꢀ
是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0023]应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、 第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅 用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多 个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可 以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解 释成为“响应于确定”。
[0024]在本申请中,提供了一种IL指令的静态优化方法及装置、计算 设备和计算机可读存储介质,用于C#的热更新方案中用来提升热更 新的速度,在下面的实施例中逐一进行详细说明。
[0025]图1示出了根据本申请一实施例的计算设备100的结构框图。该 计算设备100的部件包括但不限于存储器110和处理器120。处理器 120与存储器110通过总线130相连接,数据库150用于保存数据。
[0026]计算设备100还包括接入设备140,接入设备140使得计算设备 100能够经由一个或多个网络160通信。这些网络的示例包括公用交 换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN) 或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线 的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多 个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互 联接入(Wi

MAX)接口、以太网接口、通用串行总线(USB)接口、 蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
[0027]在本申请的一个实施例中,计算设备100的上述部件以及图1中 未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图 1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请 范围的限制。本领域技术人员可以根据需要,增添或替换其
他部件。
[0028]计算设备100可以是任何类型的静止或移动计算设备,包括移动 计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型 计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、 可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移 动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100 还可以是移动式或静止式的服务器。
[0029]现有技术中,通常采用基于Lua的各种框架如Xlua或基于C# 的运行时ILRuntime来实现APP的热更新。
[0030]基于Lua的方案虽然能够实现热更新,但是也存在多个缺陷,例 如:
[0031]在C#项目中,如果使用Lua来实现热更新逻辑,需要团队成员 需要同时对Lua和C#都特别熟悉,提高了本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种IL指令的静态优化方法,其特征在于,包括:加载程序集到运行时,获取程序集中的代码;解析所述代码中函数的静态指令,确定所述静态指令中每条指令的上下文信息;根据所述指令的上下文信息,将所述指令转换为确定性指令;在优化后的解释器中,对转换后的确定性指令进行解释执行。2.根据权利要求1所述的方法,其中,所述静态指令为无需根据运行时的动态信息即可明确其执行内容的指令。3.根据权利要求1所述的方法,其中,所述解析所述代码中函数的静态指令包括:根据程序集中函数的元数据信息对函数进行解析。4.根据权利要求1所述的方法,其中,所述每条指令的上下文信息包括:指令所操作的数据的数据类型和/或数据大小。5.根据权利要求1所述的方法,其中,所述在优化后的解释器中,对转换后的确定性指令进行解释执行包括:根据已经确定的指令上下文信息进行操作或运算。6.根...

【专利技术属性】
技术研发人员:黄强李建良何雨泉袁冠鹏
申请(专利权)人:北京云游互动网络科技有限公司
类型:发明
国别省市:

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

1