代码热更新方法和装置、存储介质、处理器及终端制造方法及图纸

技术编号:18710263 阅读:15 留言:0更新日期:2018-08-21 22:35
本发明专利技术公开了一种代码热更新方法和装置、存储介质、处理器及终端。其中,该方法包括:将待热更新的代码翻译成第一类型中间码,其中,所述第一类型中间码采用目标类型操作系统的编译器编译;将所述第一类型中间码翻译成待运行的字节码,其中,所述待运行的字节码采用所述目标类型操作系统的解释器解释运行;通过所述解释器解释运行所述待运行的字节码,以将所述待热更新的代码进行热更新。本发明专利技术解决了相关技术在对C#代码进行热更新时需要在C#代码与脚本语言Lua间进行类型转换,导致执行效率较低的技术问题。

Code hot update method and device, storage medium, processor and terminal

The invention discloses a code hot update method and device, a storage medium, a processor and a terminal. The method includes: translating the code to be hot-updated into the first type intermediate code, wherein the first type intermediate code is compiled by the compiler of the target type operating system, and the first type intermediate code is translated into the bytecode to be run, wherein the bytecode to be run is operated by the target type. The system interprets the bytecode to be run by the interpreter to update the code to be hot. The invention solves the technical problem that the type conversion between C # code and script language Lua is needed when the related technology updates the C # code hot, resulting in low execution efficiency.

【技术实现步骤摘要】
代码热更新方法和装置、存储介质、处理器及终端
本专利技术涉及计算机领域,具体而言,涉及一种代码热更新方法和装置、存储介质、处理器及终端。
技术介绍
目前,对于非越狱的IOS操作系统不允许数据段可执行权限,通常需要将C#代码转换为一种能够被ARM(英文全称为AdvancedRISCMachines)处理器高效解释运行的字节码,以达到通过解释器绕过IOS操作系统的限制,实现C#代码的热更新。相关技术通常使用脚本语言Lua实现C#代码的热更新,其中最具有代表性的方案是XLua,XLua为Unity、.Net、Mono等C#环境增加Lua脚本编程的能力。借助XLua,Lua可以方便的和C#相互调用。但是,XLua方案存在以下缺点:1、执行效率低下,Lua使用动态类型而且几乎没有优化,并且Lua与C#交互时需要转换类型。2、开发成本高,开发人员需要同时编写Lua和C#代码。针对相关技术在对C#代码进行热更新时需要在C#代码与脚本语言Lua间进行类型转换,导致执行效率较低的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术实施例提供了一种代码热更新方法和装置、存储介质、处理器及终端,以至少解决相关技术在对C#代码进行热更新时需要在C#代码与脚本语言Lua间进行类型转换,导致执行效率较低的技术问题。根据本专利技术实施例的一个方面,提供了一种代码热更新方法,包括:将待热更新的代码翻译成第一类型中间码,其中,所述第一类型中间码采用目标类型操作系统的编译器编译;将所述第一类型中间码翻译成待运行的字节码,其中,所述待运行的字节码采用所述目标类型操作系统的解释器解释运行;通过所述解释器解释运行所述待运行的字节码,以将所述待热更新的代码进行热更新。进一步地,所述将所述第一类型中间码翻译成待运行的字节码包括:将所述第一类型中间码翻译成第一语言,其中,所述第一语言为C++语言的子集;将所述第一语言翻译成第二类型中间码,其中,所述第二类型中间码用于对所述第一语言进行优化;将所述第二类型中间码翻译成第二语言,其中,所述第二语言为中央处理器指令集的子集;将所述第二语言翻译成所述待运行的字节码。进一步地,所述将待热更新的代码翻译成第一类型中间码包括:将所述待热更新的代码编译为第三类型中间码,其中,所述第三类型中间码为C#语言的中间码;将所述第三类型中间码翻译成第三语言,其中,所述第三语言为C++语言;将所述第三语言编译成所述第一类型中间码。进一步地,在所述将待热更新的代码翻译成第一类型中间码之前,所述方法还包括:确定安装在所述目标类型操作系统中的待更新的目标应用;将所述待更新的目标应用的部分代码或者全部代码确定为所述待热更新的代码。根据本专利技术实施例的另一方面,还提供了一种代码热更新装置,包括:第一翻译单元,用于将待热更新的代码翻译成第一类型中间码,其中,所述第一类型中间码采用目标类型操作系统的编译器编译;第二翻译单元,用于将所述第一类型中间码翻译成待运行的字节码,其中,所述待运行的字节码采用所述目标类型操作系统的解释器解释运行;热更新单元,用于通过所述解释器解释运行所述待运行的字节码,以将所述待热更新的代码进行热更新。进一步地,所述第二翻译单元包括:第一翻译模块,用于将所述第一类型中间码翻译成第一语言,其中,所述第一语言为C++语言的子集;第二翻译模块,用于将所述第一语言翻译成第二类型中间码,其中,所述第二类型中间码用于对所述第一语言进行优化;第三翻译模块,用于将所述第二类型中间码翻译成第二语言,其中,所述第二语言为中央处理器指令集的子集;第四翻译模块,用于将所述第二语言翻译成所述待运行的字节码。进一步地,所述第一翻译单元包括:第一编译模块,用于将所述待热更新的代码编译为第三类型中间码,其中,所述第三类型中间码为C#语言的中间码;第五翻译模块,用于将所述第三类型中间码翻译成第三语言,其中,所述第三语言为C++语言;第二编译模块,用于将所述第三语言编译成所述第一类型中间码。进一步地,所述装置还包括:第一确定单元,用于在所述将待热更新的代码翻译成第一类型中间码之前,确定安装在所述目标类型操作系统中的待更新的目标应用;第二确定单元,用于将所述待更新的目标应用的部分代码或者全部代码确定为所述待热更新的代码。根据本专利技术实施例的另一方面,还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述任一项所述的代码热更新方法。根据本专利技术实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任一项所述的代码热更新方法。根据本专利技术实施例的另一方面,还提供了一种终端,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项所述的代码热更新方法。在本专利技术实施例中,通过将待热更新的代码翻译成第一类型中间码,其中,所述第一类型中间码采用目标类型操作系统的编译器编译;将所述第一类型中间码翻译成待运行的字节码,其中,所述待运行的字节码采用所述目标类型操作系统的解释器解释运行;通过所述解释器解释运行所述待运行的字节码,以将所述待热更新的代码进行热更新,达到了无需进行代码之间的转换亦可以快速实现代码热更新的目的,从而实现了提高代码热更新的效率的技术效果,进而解决了相关技术在对C#代码进行热更新时需要在C#代码与脚本语言Lua间进行类型转换,导致执行效率较低的技术问题。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是根据本专利技术实施例的代码热更新方法的流程图;图2是根据本专利技术实施例的C#代码热更新的示意图;以及图3是根据本专利技术实施例的代码热更新装置的示意图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。根据本专利技术实施例,提供了一种代码热更新的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1是根据本专利技术实施例的代码热更新方法的流程图,如图1所示,该方法包括如下步骤:步骤S102,将待热更新的代码翻译成第一类型中间码,其中,所述第一本文档来自技高网
...

【技术保护点】
1.一种代码热更新方法,其特征在于,包括:将待热更新的代码翻译成第一类型中间码,其中,所述第一类型中间码采用目标类型操作系统的编译器编译;将所述第一类型中间码翻译成待运行的字节码,其中,所述待运行的字节码采用所述目标类型操作系统的解释器解释运行;通过所述解释器解释运行所述待运行的字节码,以将所述待热更新的代码进行热更新。

【技术特征摘要】
1.一种代码热更新方法,其特征在于,包括:将待热更新的代码翻译成第一类型中间码,其中,所述第一类型中间码采用目标类型操作系统的编译器编译;将所述第一类型中间码翻译成待运行的字节码,其中,所述待运行的字节码采用所述目标类型操作系统的解释器解释运行;通过所述解释器解释运行所述待运行的字节码,以将所述待热更新的代码进行热更新。2.根据权利要求1所述的方法,其特征在于,所述将所述第一类型中间码翻译成待运行的字节码包括:将所述第一类型中间码翻译成第一语言,其中,所述第一语言为C++语言的子集;将所述第一语言翻译成第二类型中间码,其中,所述第二类型中间码用于对所述第一语言进行优化;将所述第二类型中间码翻译成第二语言,其中,所述第二语言为中央处理器指令集的子集;将所述第二语言翻译成所述待运行的字节码。3.根据权利要求1所述的方法,其特征在于,所述将待热更新的代码翻译成第一类型中间码包括:将所述待热更新的代码编译为第三类型中间码,其中,所述第三类型中间码为C#语言的中间码;将所述第三类型中间码翻译成第三语言,其中,所述第三语言为C++语言;将所述第三语言编译成所述第一类型中间码。4.根据权利要求1至3中任一项所述的方法,其特征在于,在所述将待热更新的代码翻译成第一类型中间码之前,所述方法还包括:确定安装在所述目标类型操作系统中的待更新的目标应用;将所述待更新的目标应用的部分代码或者全部代码确定为所述待热更新的代码。5.一种代码热更新装置,其特征在于,包括:第一翻译单元,用于将待热更新的代码翻译成第一类型中间码,其中,所述第一类型中间码采用目标类型操作系统的编译器编译;第二翻译单元,用于将所述第一类型中间码翻译成待运行的字节码,其中,所述待运行的字节码采用所述目标类型操作系统的解释器解释运行;热更...

【专利技术属性】
技术研发人员:周扬
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江,33

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

1