CN101299192B - 一种非对齐访存的处理方法 - Google Patents

一种非对齐访存的处理方法 Download PDF

Info

Publication number
CN101299192B
CN101299192B CN2008101152025A CN200810115202A CN101299192B CN 101299192 B CN101299192 B CN 101299192B CN 2008101152025 A CN2008101152025 A CN 2008101152025A CN 200810115202 A CN200810115202 A CN 200810115202A CN 101299192 B CN101299192 B CN 101299192B
Authority
CN
China
Prior art keywords
instruction
alignment
access
memory access
access instruction
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.)
Active
Application number
CN2008101152025A
Other languages
English (en)
Other versions
CN101299192A (zh
Inventor
李建军
武成岗
陈龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2008101152025A priority Critical patent/CN101299192B/zh
Publication of CN101299192A publication Critical patent/CN101299192A/zh
Application granted granted Critical
Publication of CN101299192B publication Critical patent/CN101299192B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

一种非对齐访存的处理方法,包括:根据目标体系结构设定翻译门限,在解释器中对访存指令进行插桩,得到非对齐访存指令的信息;当翻译单元的执行次数大于所述翻译门限时,根据所述非对齐访存指令的信息指导翻译器选择合适指令将翻译单元翻译成本地码;根据异常处理机制将解释器插桩未发现的非对齐访存指令生成相应的非对齐访存指令序列,插入到异常处理地址,嵌入到执行代码中。使用该方法可以极大的减少二进制翻译器中产生的非对齐访存异常的次数,提高二进制翻译器的效率;可以更好的处理代码执行行为随不同输入集而变化的应用程序中出现的非对齐访存异常,并且可以有效的提高二进制翻译系统的运行效率。

Description

一种非对齐访存的处理方法
技术领域
本发明涉及计算机领域内的二进制翻译技术领域,更具体地,本发明涉及二进制翻译中的一种非对齐访存的处理方法。
背景技术
二进制翻译是解决软件移植问题的一种重要技术手段,可以将一种指令集体系结构(ISA)上的可执行程序翻译到另一种指令集体系结构的计算机上执行,并且具备很高的执行效率。二进制翻译已经用来将一种ISA上的可执行程序翻译到同种ISA的较高版本上执行,以在同一个系列的计算机中使用高档次的机器高效地运行低档次机器上开发的软件。特别是随着虚拟机技术的普及,二进制翻译技术的重要性也越来越明显,很多虚拟机软件中都不同程度的运用了二进制翻译技术以保障虚拟机的运行效率。
IA32体系结构(或称为X86体系结构)是以Intel、AMD公司为主导开发的一种指令集体系结构,是目前市场上应用最广泛的指令集体系结构之一,目前流行的大量软件是基于IA32体系结构的,因此,针对IA32的二进制翻译技术研究也格外受到重视,新推出处理器的很多厂家希望借助二进制翻译技术或虚拟机技术在自己的计算机上运行IA32软件。
在x86体系结构到Alpha、MIPS等RISC体系结构的二进制翻译系统中,非对齐内存访问(即非对齐访存,访存地址不是所访问数据单元字节数的整数倍)会对二进制翻译系统的性能产生非常大的影响。这是因为在x86体系结构的机器上有专门处理非对齐访存的硬件,处理非对齐访存的代价非常低,所以编译器编译生成目标代码时不会保证访存指令的目标地址是对齐的。但是在Alpha、MIPS等RISC体系结构的机器上使用访存指令读取或写入数据单元时,目标地址必须是地址对齐的,否则将会引发异常。操作系统检测到非对齐异常后,会调用相应的异常处理程序对其进行处理,这个处理过程一般需要上千个系统时钟周期。如果程序中有大量的非对齐访存,那么将会对程序性能产生非常大的影响。
因此在以IA-32为源体系结构,ALPHA、MIPS等为目标体系结构的二进制翻译器中,如何有效的消除上述非对齐访存带来的性能影响是一个非常重要的问题。一个简单的方法是将所有的访存指令都翻译为目标平台上对齐的访存指令序列,但这种方法的一个明显的缺点就是带来很大的代码膨胀,使程序中非对齐访存操作较少的程序的运行时间明显变长。另外,在DIGITAL FX!32、IA-32Execution Layer(EL)和Transmeta’s Code Morphing Software等二进制翻译系统中都有对非对齐访存指令的处理。其中Transmeta’s Code MorphingSoftware采用的是硬件处理的方法,可以有效的处理非对齐内存访问,但需要软硬件协同设计,只适用于特定的系统;DIGITAL FX!32和IA-32EL采用软件的方法来处理程序中的非对齐访存指令,虽然它们可以有效的处理程序中大部分的非对齐内存访问,但是对于代码执行行为随执行时间或不同输入集而变化的程序的处理效果不明显。
发明内容
为克服现有二进制翻译系统对非对齐访存处理的普适性差、实时处理能力低的缺陷,本发明提出一种非对齐访存的处理方法。
根据本发明的一个方面,提出了一种非对齐访存的处理方法,包括:
步骤10)、在解释器中对访存指令进行插桩,得到非对齐访存指令的信息;
步骤20)、当翻译单元的执行次数大于预设的翻译门限时,根据所述非对齐访存指令的信息指导翻译器将翻译单元翻译成本地码;
步骤30)、在所述本地码执行过程中,如果发生非对齐访存,则利用异常处理机制,在异常处理函数中根据操作系统保存的异常上下文信息生成相应的非对齐访存指令序列,并将所述指令序列插入到本地可执行代码中。
其中,步骤10)中,所述目标体系结构包括ALPHA、MIPS和Itanium体系结构。
其中,步骤10)进一步包括:解释执行访存指令时,确定所述访存指令发生非对齐内存访问,记录所述访存指令的相关信息;在当前执行的翻译单元解释执行完成后,保存所述访存指令的相关信息。
其中,通过判断访存地址是否对齐来确定所述指令是否发生非对齐内存访问。
其中,所述访存指令的相关信息可以包括所述访存指令的地址、访存地址的对齐方式、发生对齐访存的次数和非对齐访存的次数。
其中,步骤20)进一步包括:
步骤210)、根据所述非对齐访存指令的信息确定当前指令发生非对齐访存,将当前指令中的访存操作翻译为非对齐访存指令序列;
步骤220)、对翻译单元内的指令逐条进行翻译,根据解释器插桩得到的关于访存指令的访存地址是否对齐的信息,将访存指令翻译为相应的指令或指令序列。
其中,步骤210)进一步包括:根据当前访存指令的地址是否包括在所述访存指令的相关信息的所述访存指令的地址中,判断当前指令是否发生非对齐访存。
其中,步骤30)进一步包括:
步骤310)、在二进制翻译器的初始化阶段注册异常处理函数,如果在程序执行过程中出现非对齐访存异常,操作系统保存异常现场上下文;
步骤320)、从所述操作系统保存的异常现场上下文中得到发生非对齐异常的访存指令的地址,分析所述访存指令得到访存地址及源寄存器或目标寄存器信息,根据从异常上下文中得到的指令地址判断所述异常是否由x86访存指令引起;
步骤330)、如果所述异常不是由x86访存指令引起,根据访存指令的类型
进行相应保存或者更新处理;
步骤340)、如果所述异常由x86访存指令引起,根据分析得到的指令信息生成相应的非对齐访存指令序列;
步骤350)、将生成的非对齐访存指令序列嵌入到代码中,并将发生非对齐访存异常的指令替换为跳转到上述指令序列的无条件跳转指令。
其中,步骤330)进一步包括:
如果当前发生非对齐访存异常的访存指令是Load指令,将访存目标地址中的内容利用字节对齐的访存操作取出,然后利用逻辑操作得到结果,将结果更新到异常现场上下文信息中;
如果当前发生非对齐访存异常的访存指令是Store指令,从操作系统保存的异常现场上下文信息中取出store指令的源寄存器的内容,按对齐访存的方式将其存到目标内存单元中。
其中,步骤340)进一步包括:
申请一段本地码空间;
根据分析发生非对齐访存的指令得到的信息,生成相应的非对齐访存指令序列;
将所述生成的非对齐访存指令序列保存到所述申请的本地码空间中;
将发生非对齐访存的指令修改为跳转到非对齐访存指令序列的跳转指令。
相对于将二进制翻译器中的非对齐访存异常交由操作系统处理的方法,本发明可以极大的减少二进制翻译器中产生的非对齐访存异常的次数,提高二进制翻译器的效率;相对于通过程序预执行来判断访存指令是否会发生非对齐访存的方法,本发明不仅可以省去预执行一次应用程序的时间开销,而且可以更好的处理代码执行行为随不同输入集而变化的应用程序中出现的非对齐访存异常;相对于仅使用动态插桩机制来处理非对齐访存的方法,本发明可以更好的处理代码执行行为随执行时间而不断变化的程序(即一条访存指令在执行多次之后才发生非对齐访存)中出现的非对齐访存异常,对于程序执行过程中会出现大量非对齐访存的程序,与单纯的动态插桩机制相比,本发明可以有效的提高二进制翻译系统的运行效率。
附图说明
图1a和图1b分别示出处理非对齐访存指令的系统组成和方法流程图;
图2是在二进制翻译器中翻译对齐访存的访存指令的示意图;
图3是在二进制翻译器中翻译非对齐访存的访存指令的示意图;
图4是异常处理函数处理非对齐访存指令的示意图;
图5是异常处理函数中重新组织本地可执行代码的示意图。
具体实施方式
下面结合附图和具体实施例对本发明提供的一种非对齐访存的处理方法进行详细描述。
根据本发明的实施例提供的方法主要用在以IA-32为源体系结构的二进制翻译器中,用来处理程序中出现的非对齐内存访问的方法。在本实施例中,以IA-32作为源体系结构,以ALPHA作为目标体系结构,即将IA-32可执行程序翻译到ALPHA指令集计算机上执行。本方法适用的目标体系结构可以推广到MIPS、Itanium等体系结构上。
图1分别示出处理非对齐访存指令的系统组成和方法流程,如图1a所示,IA-32可执行程序通过插桩(profile)对非对齐访存指令进行翻译和解释,形成本地代码,在本地代码执行的过程中,如果出现非对齐访存,操作系统保护异常上下文现场,通过异常处理函数,对发生非对齐访存的异常进行处理,同时修改所述本地码,执行修改后的本地码。
如图b所示,根据本发明的实施例的二进制翻译中处理非对齐内存访问的方法包括:
步骤1、设定翻译门限,在解释器中对访存指令进行插桩,得到非对齐访存的信息;对于不同的二进制翻译系统,所设定的门限值可能有较大不同,通常为10-100之间,本实施例中翻译门限为10。
解释执行访存指令时,判断该条指令是否会发生非对齐内存访问,即判断访存地址是否对齐。如果有访存指令发生了非对齐内存访问,记录该条指令的相关信息(如访存指令的地址、访存地址的对齐方式、发生对齐访存的次数和非对齐访存的次数等),然后在当前执行的翻译单元解释执行完成时,将得到的访存指令的相关信息保存起来,形成一个地址列表。
在本技术方案中,二进制翻译器使用的是先解释后翻译的两阶段翻译框架,但本发明的应用范围并不局限于这一种翻译框架。对于当前使用比较普遍的两阶段二进制翻译器(如第一阶段进行简单翻译,第二阶段进行优化等),也可以应用到本发明中。
步骤2、当翻译单元的执行次数大于翻译门限时,利用上述得到的非对齐访存的信息指导翻译器选择合适指令将翻译单元翻译生成本地码。
通常翻译单元是指指令的基本块,翻译单元的执行次数也就是反复执行所述指令的基本块的次数。翻译器翻译指令时首先根据步骤1得到的信息判断当前指令是否会发生非对齐访存(即当前访存指令的地址是否在步骤1中收集到的发生非对齐访存的访存指令的地址列表中),若当前指令会发生非对齐访存则将当前指令中的访存操作翻译为非对齐访存指令序列,否则将当前指令中的访存操作翻译为正常的访存指令。
如图2和图3所示,图2表示如果步骤1中得到的信息表明当前x86访存指令的访存地址是对齐的,则将该指令直接翻译为alpha上的相应的访存指令。图3表示如果步骤1中得到的信息表明当前x86访存指令的访存地址是非对齐的,则将该指令翻译为alpha上相应的非对齐访存指令序列。对翻译单元内的指令逐条进行翻译,并根据解释器插桩得到的关于访存指令的访存地址是否对齐的信息将访存指令翻译为相应的指令或指令序列。即如果收集到的访存指令的访存地址都是对齐的,那么就将这条访存指令翻译为目标平台上正常的访存指令;如果收集到的访存指令的访存地址中有非对齐的,那么就将这条指令翻译为目标平台上的访存指令序列。
步骤3、利用异常处理机制处理在本地程序执行过程中出现的非对齐访存指令。
在异常处理函数中对发生非对齐异常的指令进行处理。在二进制翻译器的初始化阶段注册异常处理函数,如果在本地程序执行过程中出现了非对齐访存异常,则操作系统会自动保存异常现场上下文,然后跳转到异常处理函数中执行。在异常处理函数中会根据异常现场,将发生异常的指令替换为相应的非对齐访存指令序列。在异常处理函数的处理过程中,包括:
从操作系统保存的异常现场上下文中得到发生非对齐异常的访存指令的地址,然后分析该访存指令得到指令访存类型、访存地址、源或目标寄存器等信息,并根据从异常上下文中得到的指令地址判断该异常是否由x86访存指令引起,即该指令是否为翻译x86可执行程序得到的本地代码。
对当前发生非对齐访存异常的指令,如果该指令不是翻译x86可执行程序得到的本地代码,则按照以下原则进行处理:
a)、如果当前发生非对齐访存异常的访存指令是Load指令,则将访存目标地址中的内容利用字节对齐的访存操作取出,然后利用移位、与或等逻辑操作得到结果,最后将结果更新到异常现场上下文信息中;
b)、如果当前发生非对齐访存异常的访存指令是Store指令,则首先从操作系统保存的异常现场上下文信息中取出store指令的源寄存器的内容,然后按对齐访存的方式将其存到目标内存单元中。
对当前发生非对齐访存异常的指令,如果该指令是翻译x86可执行程序得到的本地代码,并根据分析得到的指令信息生成相应的非对齐访存指令序列,如图4所示,包括以下步骤:
a)、申请一段本地码空间,用于存放生成的非对齐访存指令序列。
b)、根据分析发生非对齐访存的指令得到的信息,生成相应的非对齐访存指令序列。
c)、将生成的非对齐访存指令序列保存到申请的本地码空间中。
d)、将发生非对齐访存的指令修改为跳转到非对齐访存指令序列的跳转指令。
对异常处理函数处理后的代码进行重新组织,如图5所示,将生成的非对齐访存指令序列插入到发生非对齐访存异常的指令所在地址,即将无条件跳转指令的目标指令嵌入到代码中,改善代码局部性。
最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其他的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。

Claims (10)

1.一种非对齐访存的处理方法,包括:
步骤10)、在解释器中对访存指令进行插桩,得到非对齐访存指令的信息;
步骤20)、当翻译单元的执行次数大于预设的翻译门限时,根据所述非对齐访存指令的信息指导翻译器将翻译单元翻译成本地码;
步骤30)、在所述本地码执行过程中,如果发生非对齐访存,则利用异常处理机制,在异常处理函数中根据操作系统保存的异常上下文信息生成相应的非对齐访存指令序列,并将所述指令序列插入到本地可执行代码中;
其中,所述非对齐访存是指访存地址不是所访问数据单元字节数的整数倍。
2.权利要求1的方法,其中,步骤10)中,所述目标体系结构包括ALPHA、MIPS和Itanium体系结构。
3.权利要求1的方法,其中,步骤10)进一步包括:解释执行访存指令时,确定所述访存指令发生非对齐内存访问,记录所述访存指令的相关信息;在当前执行的翻译单元解释执行完成后,保存所述访存指令的相关信息。
4.权利要求3的方法,其中,通过判断访存地址是否对齐来确定所述指令是否发生非对齐内存访问。
5.权利要求3的方法,其中,所述访存指令的相关信息包括所述访存指令的地址、访存地址的对齐方式、发生对齐访存的次数和非对齐访存的次数。
6.权利要求5的方法,其中,步骤20)进一步包括:
步骤210)、根据所述非对齐访存指令的信息确定当前指令发生非对齐访存,将当前指令中的访存操作翻译为非对齐访存指令序列;
步骤220)、对翻译单元内的指令逐条进行翻译,根据解释器插桩得到的关于访存指令的访存地址是否对齐的信息,将访存指令翻译为相应的指令或指令序列。
7.权利要求6的方法,其中,步骤210)进一步包括:根据当前访存指令的地址是否包括在所述访存指令的相关信息的所述访存指令的地址中,判断当前指令是否发生非对齐访存。
8.权利要求1的方法,其中,步骤30)进一步包括:
步骤310)、在二进制翻译器的初始化阶段注册异常处理函数,如果在程序执行过程中出现非对齐访存异常,操作系统保存异常现场上下文;
步骤320)、从所述操作系统保存的异常现场上下文中得到发生非对齐异常的访存指令的地址,分析所述访存指令得到访存地址及源寄存器或目标寄存器信息,根据从异常上下文中得到的指令地址判断所述异常是否由x86访存指令引起;
步骤330)、如果所述异常不是由x86访存指令引起,根据访存指令的类型进行相应保存或者更新处理;
步骤340)、如果所述异常由x86访存指令引起,根据分析得到的指令信息生成相应的非对齐访存指令序列;
步骤350)、将生成的非对齐访存指令序列插入到代码中,并将发生非对齐访存异常的指令替换为跳转到上述指令序列的无条件跳转指令。
9.权利要求8的方法,其中,步骤330)进一步包括:
如果当前发生非对齐访存异常的访存指令是Load指令,将访存目标地址中的内容利用字节对齐的访存操作取出,然后利用逻辑操作得到结果,将结果更新到异常现场上下文信息中;
如果当前发生非对齐访存异常的访存指令是Store指令,从操作系统保存的异常现场上下文信息中取出store指令的源寄存器的内容,按对齐访存的方式将其存到目标内存单元中。
10.权利要求8的方法,其中,步骤340)进一步包括:
申请一段本地码空间;
根据分析发生非对齐访存的指令得到的信息,生成相应的非对齐访存指令序列;
将所述生成的非对齐访存指令序列保存到所述申请的本地码空间中;
将发生非对齐访存的指令修改为跳转到非对齐访存指令序列的跳转指令。
CN2008101152025A 2008-06-18 2008-06-18 一种非对齐访存的处理方法 Active CN101299192B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101152025A CN101299192B (zh) 2008-06-18 2008-06-18 一种非对齐访存的处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101152025A CN101299192B (zh) 2008-06-18 2008-06-18 一种非对齐访存的处理方法

Publications (2)

Publication Number Publication Date
CN101299192A CN101299192A (zh) 2008-11-05
CN101299192B true CN101299192B (zh) 2010-06-02

Family

ID=40079024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101152025A Active CN101299192B (zh) 2008-06-18 2008-06-18 一种非对齐访存的处理方法

Country Status (1)

Country Link
CN (1) CN101299192B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479295B2 (en) * 2011-03-30 2013-07-02 Intel Corporation Method and apparatus for transparently instrumenting an application program
CN103744641B (zh) * 2014-01-23 2016-08-17 龙芯中科技术有限公司 禁止已翻译指令序列执行的方法、装置和虚拟机
CN104461925B (zh) * 2014-11-14 2017-10-13 浪潮(北京)电子信息产业有限公司 一种存储设备地址对齐的自动纠正方法和装置
CN106775595B (zh) * 2015-11-25 2019-10-01 龙芯中科技术有限公司 Mips平台数据访问方法和装置
CN107608809B (zh) * 2016-07-11 2023-09-29 中兴通讯股份有限公司 异常处理方法及装置
CN107656735B (zh) * 2016-07-26 2020-05-12 龙芯中科技术有限公司 访存操作的编译方法及装置
CN108228235B (zh) * 2016-12-21 2020-11-13 龙芯中科技术有限公司 基于mips架构的数据操作处理方法和装置
CN108509289B (zh) * 2017-02-28 2021-06-29 龙芯中科技术股份有限公司 一种基于MIPS处理器vxWorks系统的验证方法和装置
CN110175049B (zh) * 2019-05-17 2021-06-08 西安微电子技术研究所 一种支持地址未对齐的数据拆分与聚合访问的处理系统及方法
CN112732481B (zh) * 2020-12-31 2023-10-10 南方电网科学研究院有限责任公司 一种处理器的异常修复方法及装置
CN113835927B (zh) * 2021-09-23 2023-08-11 武汉深之度科技有限公司 一种指令执行方法、计算设备及存储介质
CN114003291A (zh) * 2021-11-02 2022-02-01 武汉深之度科技有限公司 一种应用程序运行方法、装置、计算设备及存储介质
CN114003284A (zh) * 2021-11-02 2022-02-01 武汉深之度科技有限公司 一种基于读写锁的指令执行方法、计算设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1529229A (zh) * 2003-10-21 2004-09-15 中国科学院计算技术研究所 二进制翻译中标志位的优化处理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1529229A (zh) * 2003-10-21 2004-09-15 中国科学院计算技术研究所 二进制翻译中标志位的优化处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
朱嘉.基于MIPS32平台的Linux操作系统移植.单片机与嵌入式系统应用 11.2006,(11),24-26.
朱嘉.基于MIPS32平台的Linux操作系统移植.单片机与嵌入式系统应用 11.2006,(11),24-26. *

Also Published As

Publication number Publication date
CN101299192A (zh) 2008-11-05

Similar Documents

Publication Publication Date Title
CN101299192B (zh) 一种非对齐访存的处理方法
US8769511B2 (en) Dynamic incremental compiler and method
JP3615770B2 (ja) アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ
KR101381274B1 (ko) 효율적인 동적 이진 변환을 위한 레지스터 매핑 방법, 시스템 및 컴퓨터 판독가능 저장 매체
Ming et al. Straighttaint: Decoupled offline symbolic taint analysis
US11249758B2 (en) Conditional branch frame barrier
US20120233601A1 (en) Recompiling with Generic to Specific Replacement
JP3776132B2 (ja) マイクロプロセッサの改良
CN108027748B (zh) 指令集模拟器及其模拟器生成方法
CN1829977B (zh) 利用一个栈跟踪高速缓存器改善垃圾收集的性能的方法和装置
US8589143B2 (en) Virtualization apparatus and processing method thereof
US10268497B2 (en) Conjugate code generation for efficient dynamic optimizations
CN114115990A (zh) 动静结合二进制翻译的程序迁移方法、系统及存储介质
CN111625279A (zh) 基于动态链接库的动静融合二进制翻译方法及系统
US20100095102A1 (en) Indirect branch processing program and indirect branch processing method
US11550714B2 (en) Compiling application with multiple function implementations for garbage collection
CA2762563A1 (en) Data prefetching and coalescing for partitioned global address space languages
US11474832B2 (en) Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
US20200327051A1 (en) Hybrid garbage collection
CN112905474B (zh) 一种基于硬件的高级程序动态控制流追踪方法和装置
CN114816435A (zh) 一种基于逆向技术的软件开发方法
Kim et al. Small footprint JavaScript engine
Liu et al. Towards a universal and portable assembly code size reduction: A case study of RISC-V ISA
Dot et al. Erico: Effective removal of inline caching overhead in dynamic typed languages
CN102819435A (zh) 一种Java虚拟机的位置无关代码生成方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant