CN114461343A - 一种il指令的静态优化方法和装置 - Google Patents
一种il指令的静态优化方法和装置 Download PDFInfo
- Publication number
- CN114461343A CN114461343A CN202210117322.9A CN202210117322A CN114461343A CN 114461343 A CN114461343 A CN 114461343A CN 202210117322 A CN202210117322 A CN 202210117322A CN 114461343 A CN114461343 A CN 114461343A
- Authority
- CN
- China
- Prior art keywords
- instruction
- static
- instructions
- interpreter
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请提供了一种IL指令的静态优化方法、装置、计算设备和计算机可读存储介质,该方法对解释器运行方式进行了优化,当热更新程序集被加载到运行时后,获取函数的元数据信息并解析其中的指令,根据指令的上下文信息将多功能指令转换为确定性的指令,并对解释器进行了改进,重新实现了一个基于转换过的指令的解释器,从而提升了解释器的执行速度,进而提高了热更新的效率。
Description
技术领域
本申请涉及计算机编译技术领域,特别涉及一种IL指令的静态 优化方法、装置、计算设备和计算机可读存储介质。
背景技术
在移动互联网领域,通常使用热更新的方式来实现APP的功能 更新或Bug修复,用户打开APP时即可实现更新,不用重新下载整 个APP,从而实现了良好的用户体验。现有技术中,一种流行的方案 是基于C#的热更新方案,该方案利用解释器执行热更新部分动态库中的IL指令来实现热更新。由于IL指令集中的多个指令是运行时上 下文相关指令,如在运行时根据操作的数据类型决定执行何种操作。 但IL字节码中的函数实际上又是静态的,编译完成后,某条指令应 该操作什么类型的数据是确定的,无需等到运行时再去判定,这不仅 增加了运行判定和跳转时间,还额外增加了维护数据栈的数据类型的 成本。
发明内容
有鉴于此,本申请例提供了一种IL指令的静态优化方法、装置、 计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种IL指令的静态优化 方法,包括:
加载程序集到运行时,获取程序集中的代码;
解析所述代码中函数的静态指令,确定所述静态指令中每条指令 的上下文信息;
根据所述指令的上下文信息,将所述指令转换为确定性的指令;
在优化后的解释器中,对转换后的确定性的指令进行解释执行。
根据本申请实施例的第二方面,提供了一种IL指令的静态优化 装置,包括:
加载单元,用于加载程序集到运行时,获取程序集中的代码;
解析单元,用于解析所述代码中函数的静态指令,确定所述静态 指令中每条指令的上下文信息;
转换单元,用于根据所述指令的上下文信息,将所述指令转换为 确定性的指令;
执行单元,用于在优化后的解释器中,对转换后的确定性的指令 进行解释执行。
根据本申请实施例的第三方面,提供了一种计算设备,包括存储 器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所 述处理器执行所述指令时实现所述IL指令的静态优化方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质, 其存储有计算机指令,该指令被处理器执行时实现所述IL指令的静 态优化方法的步骤。
通过本申请实施例中的方法和装置,对IL2CPP的结构进行改进, 将一个仅支持AOT静态编译的运行时改造为一个支持AOT+解释器 的运行时,实现了跨平台的高效热更新方案的基础,并对解释器运行 方式进行了优化。当热更新程序集被加载到运行时后,获取函数的元 数据信息并解析其中的指令,根据指令的上下文信息将多功能指令转 换为确定性的指令,并对解释器进行了改进,重新实现了一个基于转 换过的指令的解释器,从而提升了解释器的执行速度,进而提高了热 更新的效率。
附图说明
图1是本申请实施例提供的计算设备的结构框图;
图2是本申请实施例提供的IL指令的静态优化方法的一流程示 意图;
图3是本申请实施例提供的IL指令的静态优化方法中对指令进 行替换的一示意图;
图4是本申请实施例提供的IL指令的静态优化装置的结构示意 图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但 是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术 人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受 下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定 实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一 个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、 “所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他 含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或” 是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、 第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅 用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多 个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可 以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解 释成为“响应于确定”。
在本申请中,提供了一种IL指令的静态优化方法及装置、计算 设备和计算机可读存储介质,用于C#的热更新方案中用来提升热更 新的速度,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例的计算设备100的结构框图。该 计算设备100的部件包括但不限于存储器110和处理器120。处理器 120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备 100能够经由一个或多个网络160通信。这些网络的示例包括公用交 换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN) 或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多 个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互 联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、 蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备100的上述部件以及图1中 未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图 1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请 范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动 计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型 计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、 可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100 还可以是移动式或静止式的服务器。
现有技术中,通常采用基于Lua的各种框架如Xlua或基于C# 的运行时ILRuntime来实现APP的热更新。
基于Lua的方案虽然能够实现热更新,但是也存在多个缺陷,例 如:
在C#项目中,如果使用Lua来实现热更新逻辑,需要团队成员 需要同时对Lua和C#都特别熟悉,提高了开发的成本。
由于运行期间需要在C#和Lua之间频繁切换,且Lua调用C# 的代码速度较慢,因此会降低游戏运行效率;
无法使用集成开发调试环境,代码的单步调试,性能分析都缺乏 良好的工具支持,难以满足大型工程的要求。
由于以上缺陷,现有技术中还提出了一种基于C#实现的 ILRuntime工具,用来实现同一种语言下的热更新方案。ILRuntime 为基于C#的平台如Unity,提供了一个纯C#实现,快速、方便且可 靠的IL运行时,使得在不支持JIT的硬件环境(如iOS)能够实现代码 的热更新。其实现原理是,ILRuntime借助第三方Mono.Cecil库来读 取热更新DLL的PE信息,以及其中类型的所有信息,最终得到IL 汇编码,然后通过解释器解释DLL中的IL指令,逐条翻译并执行。 该方式将不同类型的开发语言编写的热更新代码编译成IL字节码, 通过建立的IL汇编器编译到DLL文件中,当客户端加载该DLL文 件时,执行IL字节码,然后初始化ILRuntime,加载热更新代码。
虽然ILRuntime克服了Lua在热更新场景下的部分缺陷,但是它 自身也存在着不少缺陷,首先由于它使用了外置解释器,热更脚本使 用的类型系统与CLR的类型系统并不统一,造成大量的不兼容问题, 需要进行诸多额外的操作如跨域继承,辅助反射等,开发效率很低; 其次,在使用高级的语言特性组合时,如反射、泛型时,容易出现错 误,稳定性较差;纯计算的性能弱于Lua,计算密集型的代码不适合 使用。
因此,在现有技术中,对于使用C#平台,如Unity开发的应用, 没有一种方便、高效、且成本低的热更新解决方案。
在Unity开发平台中,IL2CPP是一种新的脚本后处理(Scripting Backend)方式,针对平台编译输出的IL(中间语言)进行处理,将 IL语言转换为静态的C++代码,然后再由各个平台的C++编译器直 接编译成能执行的原生汇编代码,从而实现Unity的跨平台开发。这 种方式除了执行效率快以外,还可以利用各个平台的C++编译器对代 码执行编译期优化,这样可以进一步减小最终游戏的尺寸并提高游戏 运行速度,因此,几乎所有基于Unity的开发过程都使用了IL2CPP 工具。
其中,IL2CPP主要由两部分组成:
·AOT(Ahead Of Time)静态编译编译器(il2cpp.exe);
·运行时库(libil2cpp);
AOT编译器将IL转换为C++代码,再交给各平台的C++编译器 进行编译,由于使用的是AOT静态编译,因此在编译时就必须完全 确定需要用到的类型;运行时库则会提供诸如垃圾回收、线程/文件 获取、内部调用直接修改托管数据结构的原生代的服务与抽象。
无论是Lua还是ILRuntime,都采用了解释器的原理来对热更新 的代码进行解释执行,不生成本地机器码,从而实现了各个平台上的 热更新。因此也可以通过为IL2CPP工具增加解释器的方式来实现热 更新功能。
通过为IL2CPP工具添加IL解释器的方式使得IL2CPP工具具备 了AOT编译器、运行时环境和IL解释器功能,具有了多个不同平台 的编译和热更新基础。其中,对于无需更新的代码使用AOT静态编 译成C++代码,进而被目标平台编译为本地可执行程序;对于热更新程序集中的代码,则通过IL解释器进行解释执行。
然而,在现有的解释器中,标准的IL指令集中很多指令是一种 运行时上下文相关指令,例如运行时根据操作的数据类型,决定执行 何种操作。但在IL字节码中,函数实际上是静态的,在IL程序集编 译完成后,其中的指令应该操作何种类型的数据是确定的,无需在运 行时再去判定,在运行时进行相关的判断不仅增加了运行判定和跳转 时间,还额外增加了维护数据栈的数据类型的成本。
在本申请实施例中,为了解决上述问题,提出了一种IL指令的 静态优化方法和装置、计算设备和计算机可读存储介质。
说明书附图1中的处理器120可以执行图2所示的IL指令的静 态优化方法中的步骤。图2中示出了实现IL指令的静态优化方法的 流程图,包括步骤202至步骤208。
步骤202:加载程序集到运行时,获取程序集中的代码。
为IL2CPP工具添加IL解释器后,使得该工具具备了AOT编译 器、CLR运行时环境和IL解释器功能,具有了多个不同平台的编译 和热更新基础。
进一步的,通过System.Reflection.Assembly.Load方法加载热更 新的程序集到运行时的程序集列表中。
步骤204:解析代码中函数的指令流,确定指令流中每条指令的 上下文信息。
在一个具体的实施方式中,根据已加载的程序集获取函数的元数 据metadata,并进一步根据该元数据获取函数中所使用的指令,以及 该指令在运行时需要操作的数据的具体数据类型。
例如,函数A中包含指令add,该指令对两个类型为int4的整数 进行相加;
函数B中包含指令div,该指令对两个类型为float的浮点数进行 相除;
函数C中包含指令box,该指令将int8类型的整数进行装箱工作。
函数D中还包括其他的指令,在此不一一列举。
在另一种具体的实施方式中,根据已加载的程序集获取函数的元 数据metadata,并进一步根据该元数据获取函数中所使用的指令,以 及该指令在运行时需要操作的数据的具体数据大小。
例如,函数E中包含指令ldloc,该指令将指定索引处的局部变 量加载到计算堆栈上,进而获取该局部变量的数据类型和数据大小 size。
函数F中包含指令st,该指令从计算堆栈的顶部弹出当前值并将 其存储到指定索引处的局部变量列表中,进而获取该局部变量的数量 类型和数据大小size。
函数G中还包括其他的指令,在此不一一列举。
在上述各种实施方式中,对已加载的IL程序集进行解析,根据 程序集中函数的元数据信息对每个函数中的指令流进行分析,确定该 指令执行所需要的上下文信息。
标准的IL指令集中,部分指令需要运行时进行上下文决策,例 如add、sub等指令,它可以对int,long,float,double等不同的数 据类型执行加法操作,这导致该指令在运行时需要检查栈上的数据类 型,才能决定执行哪种数据类型的操作。这无疑增加了解释器判断数 据类型的开销、指令跳转的时间,还额外增加了维护数据栈中数据类 型的成本,这些问题都会导致解释器的效率降低从而拉低热更新时的 速度。
因此,在本申请的实施方式中,首先获取已读取的程序集中的静 态指令,该静态指令为无需根据运行时的动态信息即可明确其执行内 容的指令。
本领域技术人员应当知晓,在IL指令集中存在多个静态指令如 add、sub、div、cov、box、ldloc等等,在上述实施例中,所列举的 静态指令仅为例举而非穷举,本领域技术人员可以根据实际需求对相 关的IL指令进行本实施例中的操作,在此不再赘述。
步骤206:根据指令的上下文信息,将指令转换为确定性指令。
在一个具体的实施方式中,根据指令在运行时需要操作的数据的 具体数据类型,确定该多功能性指令对应的确定性指令。
例如,根据函数A中包含的指令add,以及该指令所操作的两个 int4型的整数,确定多功能指令add在此函数中对应的确定性指令为 Add_i4;
根据函数B中包含指令的div,以及该指令所操作的两个类型为 float4的浮点数,确定多功能指令div在此函数中对应的确定性指令 为div_f4;
根据函数C中包含指令的box,以及该指令所操作的int8类型的 整数,确定多功能指令box在此函数中对应的确定性指令为box_i8。
在另一个具体的实施方式中,根据指令在运行时需要操作的数据 的具体数据大小,确定该多功能性指令对应的确定性指令。
例如,根据函数E中包含的指令ldloc,以及获取的该指令要操 作的局部变量的数据大小为4字节,确定多功能指令ldloc在此函数 中对应的确定性指令为LoadField_4;
根据函数E’中包含指令ldloc,以及获取的该指令要操作的局部 变量的数据类型为struct、大小为n字节,确定多功能指令ldloc在此 函数中对应的确定性指令为LoadField_struct_n。
进一步的,将上述多功能指令替换为确定性指令。
进一步的,在运行时中完成所有函数中的上述指令替换,将多功 能指令替换成确定性的指令。
步骤208:在解释器中,对转换后的确定性的指令进行解释执行。
在步骤206中,对函数中的指令进行了替换,但是指令在执行时 是由解释器解释执行的,因此在该实施方式中,重新实现一个基于转 换过的指令的解释器,用于执行转换后的确定性的指令。
例如对于add_i4指令,在解释器中的实现示例如下:
对于ldloc_4指令,在解释器中的实现示例如下:
将指令转换成确定性的指令后,在优化后的解释器中执行时,直 接根据已经确定的上下文信息进行操作或运算,不再需要运行时的分 支判定,也不再需要维护每个执行数据栈的数据类型,相对于传统的 解释器提高了运行效率。
在上述实施例中,对IL2CPP的结构进行改进,将一个仅支持 AOT静态编译的运行时改造为一个支持AOT+解释器的运行时,实 现了跨平台的高效热更新方案的基础;进一步地,对解释器运行方式 进行了优化,当热更新程序集被加载到运行时后,获取函数的元数据 信息并解析其中的指令,根据指令的上下文信息将多功能指令转换为 确定性的指令,并对解释器进行了改进,重新实现了一个基于转换过 的指令的解释器,从而提升了解释器的执行速度,进而提高了热更新 的效率。
与上述方法实施例相对应,本申请还提供了一种IL指令的静态 优化装置的实施例,图4示出了本申请一个实施例的一种IL指令的 静态优化装置的结构示意图。如图4所示,该装置包括:
加载单元,用于加载程序集到运行时,获取程序集中的代码;
解析单元,用于解析所述代码中函数的静态指令,确定所述静态 指令中每条指令的上下文信息;
转换单元,用于根据所述指令的上下文信息,将所述指令转换为 确定性的指令;
执行单元,用于在优化后的解释器中,对转换后的确定性的指令 进行解释执行。
上述为本实施例的一种IL指令的静态优化装置的示意性方案。 需要说明的是,该IL指令的静态优化装置的技术方案与上述的IL指 令的静态优化方法的技术方案属于同一构思,该IL指令的静态优化 装置的技术方案未详细描述的细节内容,均可以参见上述IL指令的 静态优化方法的技术方案的描述。
本申请一实施例中还提供一种计算设备,包括存储器、处理器及 存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行 所述指令时实现所述的IL指令的静态优化方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是, 该计算设备的技术方案与上述的IL指令的静态优化方法的技术方案 属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以 参见上述IL指令的静态优化方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算 机指令,该指令被处理器执行时实现如前所述IL指令的静态优化方 法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要 说明的是,该存储介质的技术方案与上述的IL指令的静态优化方法 的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内 容,均可以参见上述IL指令的静态优化方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要 求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可 以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。 另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序 才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也 是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以 为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述 计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体 或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、 只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random AccessMemory)、电载波信号、电信信号以及软件分发介质 等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管 辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖 区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信 信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将 其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申 请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以 采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说 明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不 一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例 中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实 施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实 施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请 选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际 应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本 申请仅受权利要求书及其全部范围和等效物的限制。
Claims (9)
1.一种IL指令的静态优化方法,其特征在于,包括:
加载程序集到运行时,获取程序集中的代码;
解析所述代码中函数的静态指令,确定所述静态指令中每条指令的上下文信息;
根据所述指令的上下文信息,将所述指令转换为确定性指令;
在优化后的解释器中,对转换后的确定性指令进行解释执行。
2.根据权利要求1所述的方法,其中,所述静态指令为无需根据运行时的动态信息即可明确其执行内容的指令。
3.根据权利要求1所述的方法,其中,所述解析所述代码中函数的静态指令包括:
根据程序集中函数的元数据信息对函数进行解析。
4.根据权利要求1所述的方法,其中,所述每条指令的上下文信息包括:
指令所操作的数据的数据类型和/或数据大小。
5.根据权利要求1所述的方法,其中,所述在优化后的解释器中,对转换后的确定性指令进行解释执行包括:
根据已经确定的指令上下文信息进行操作或运算。
6.根据权利要求1所述的方法,其中,在CLR运行时环境中完成指令的转换。
7.一种IL指令的静态优化装置,其特征在于,包括:
加载单元,用于加载程序集到运行时,获取程序集中的代码;
解析单元,用于解析所述代码中函数的静态指令,确定所述静态指令中每条指令的上下文信息;
转换单元,用于根据所述指令的上下文信息,将所述指令转换为确定性指令;
执行单元,用于在优化后的解释器中,对转换后的确定性指令进行解释执行。
8.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述指令时实现权利要求1-6任意一项所述方法的步骤。
9.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1-6任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210117322.9A CN114461343A (zh) | 2022-02-08 | 2022-02-08 | 一种il指令的静态优化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210117322.9A CN114461343A (zh) | 2022-02-08 | 2022-02-08 | 一种il指令的静态优化方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461343A true CN114461343A (zh) | 2022-05-10 |
Family
ID=81411728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210117322.9A Pending CN114461343A (zh) | 2022-02-08 | 2022-02-08 | 一种il指令的静态优化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461343A (zh) |
-
2022
- 2022-02-08 CN CN202210117322.9A patent/CN114461343A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108920133B (zh) | 跨语言编程方法、装置、电子设备及存储介质 | |
US5590331A (en) | Method and apparatus for generating platform-standard object files containing machine-independent code | |
JP7324831B2 (ja) | ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器 | |
US20050108690A1 (en) | System and method of generating applications for mobile devices | |
CN109739508B (zh) | 源代码编译方法、装置、系统及存储介质 | |
CN107077379B (zh) | 一种虚拟机创建方法和装置 | |
JP2010517134A (ja) | 異機種間プログラム連動方法及びそのミドルウェアプラットホームエンジン | |
CN114115964B (zh) | 一种用于Unity的热更新方法、装置、计算设备及计算机可读存储介质 | |
Hong et al. | The application guide of mixed programming between MATLAB and other programming languages | |
CN114816417B (zh) | 一种交叉编译方法、装置、计算设备及存储介质 | |
CN113031966A (zh) | 一种智能选择编译加速库的深度学习编译优化方法 | |
WO2016094258A1 (en) | Inter-procedural type propagation for devirtualization | |
CN115639986A (zh) | 软件包构建方法以及装置 | |
US9886251B2 (en) | Optimized compiling of a template function | |
JP4768984B2 (ja) | コンパイル方法、コンパイルプログラムおよびコンパイル装置 | |
JP2005182562A (ja) | コンパイル方法および装置、ならびにコンパイラ | |
CN114443052A (zh) | 一种il指令运行时的动态特例化方法和装置 | |
CN113360156B (zh) | 一种ios编译方法及相关设备 | |
CN115048184A (zh) | 一种解释器指令的优化执行方法和装置 | |
CN114461343A (zh) | 一种il指令的静态优化方法和装置 | |
CN115794162A (zh) | 一种用于在热更新时对差分更新进行优化的方法和装置 | |
CN103677767A (zh) | 一种处理应用程序的方法、操作系统及电子设备 | |
Fu et al. | Research on audio/video codec based on Android | |
CN114816672A (zh) | 虚拟机的创建方法、装置、电子设备和存储介质 | |
CN114594981B (zh) | 一种用于在热更新时解决泛型兼容性问题的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |