CN103744641A - 禁止已翻译指令序列执行的方法、装置和虚拟机 - Google Patents
禁止已翻译指令序列执行的方法、装置和虚拟机 Download PDFInfo
- Publication number
- CN103744641A CN103744641A CN201410032331.3A CN201410032331A CN103744641A CN 103744641 A CN103744641 A CN 103744641A CN 201410032331 A CN201410032331 A CN 201410032331A CN 103744641 A CN103744641 A CN 103744641A
- Authority
- CN
- China
- Prior art keywords
- address
- sequence
- processing routine
- control structure
- data field
- 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.)
- Granted
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明提供一种禁止已翻译指令序列执行的方法、装置和虚拟机,包括:判断已翻译指令序列对应的监测语句中包括的假设条件是否成立;若假设条件不成立,则从已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址;修改已翻译指令序列首部的至少一条指令为跳转到固定处理例程的首地址的跳转指令序列,以执行跳转指令序列禁止已翻译指令序列的执行。本发明,通过修改已翻译指令序列首部的至少一条指令为跳转到固定处理例程的首地址的跳转指令序列,实现了一次跳转就可以禁止已翻译指令序列的执行,提高了禁止已翻译指令序列执行时的处理效率。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种禁止已翻译指令序列执行的方法、装置和虚拟机。
背景技术
虚拟机(英文:Virtual Machine简称:VM)的核心是执行引擎,包括解释器和编译器,其中编译器通常为即时编译器(英文:Just-in-timeCompiler,简称:JIT)。VM JIT在翻译某个方法时,为了尽可能地提升翻译后生成的本地机器指令的质量,通常会基于某些假设(如对象的类型、分支是否可能被执行等)进行深度优化,对于这种基于若干假设的优化,同时生成相应的假设条件监测语句。当某项假设不再成立时,虚拟机需要禁止先前基于该假设翻译生成的本地机器指令序列的执行。
虚拟机禁止已翻译指令序列的执行,一般采用将需要被禁止执行的指令序列的若干条首部指令修改为实现跳转到一个固定处理例程(fix_handler)首地址功能的若干条指令,然后在这个固定处理例程中启动解释执行或者重新翻译等后续动作。在虚拟机修改已翻译指令序列的同时需要保证修改操作的原子性从而保证多线程安全:使得可能正在执行该指令序列的多个线程所执行的要么是修改之前的指令序列,要么是修改完成之后的指令序列,以避免引发执行错误。
指令序列的原子性修改通常要求硬件所提供的最大原子访存位数不小于所需更改的指令序列(即实现跳转到固定处理例程的首地址功能的指令序列)总长度,然而标准的MIPS体系结构,在64位硬件***中所能提供的最大原子访存长度为8字节,通常小于完成指令修改所需的长度。在保证多线程安全并且满足硬件直接支持的原子性修改操作限制的前提下,现有技术中,虚拟机禁止已翻译指令序列执行,通常采用下述方法:JIT翻译方法时,在生成的本地指令序列的头部为实现远跳转的指令预留足够的存储空间,并向其写入跳转到固定处理例程的首地址的远跳转指令序列;当需要禁止已翻译指令序列的执行时,首先将第一条指令原子性地修改为一条短跳转指令,通过该短跳转指令跳转到之前指令序列头部所预留的存储空间的首地址,然后继续执行先前写入的远跳转指令序列以跳转到固定处理例程的首地址,从而完成禁止已翻译指令序列的执行。
上述方法,通过增加一次额外的短跳转指令满足了硬件直接支持的原子性修改操作的限制,并且由于虚拟机在修改指令序列时,仅存在修改前和修改后两个状态,因此在多线程环境下也是安全的。然而,由于现代处理器对跳转指令的执行通常代价较高,采用上述方法,虚拟机禁止已翻译指令序列执行的效率不高。
发明内容
鉴于此,本发明提供一种禁止已翻译指令序列执行的方法、装置和虚拟机,以提高虚拟机禁止已翻译指令序列执行的效率。
本发明的第一方面提供一种禁止已翻译指令序列执行的方法,包括:
判断已翻译指令序列对应的监测语句中包括的假设条件是否成立;
若所述假设条件不成立,则从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址;
修改所述已翻译指令序列首部的至少一条指令为跳转到所述固定处理例程的首地址的跳转指令序列,以执行所述跳转指令序列禁止所述已翻译指令序列的执行。
进一步地,上述从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址之前,还包括:
在所述线程控制结构中增加一数据域;
将所述固定处理例程的首地址存储在所述数据域中;
上述从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址,包括:
从所述数据域中获取所述固定处理例程的首地址。
进一步地,上述从所述数据域中获取所述固定处理例程的首地址,包括:
获取所述线程控制结构的首地址;
将所述线程控制结构的首地址增加一个固定偏移量得到所述数据域对应的地址,所述固定偏移量为所述数据域在线程控制结构中对应的偏移量;
根据所述数据域对应的地址获取所述固定处理例程的首地址。
进一步地,上述跳转指令序列,包括加载指令和跳转指令,其中所述加载指令用于加载所述固定处理例程的首地址到临时寄存器,所述跳转指令用于跳转到所述临时寄存器中保存的固定处理例程的首地址。
本发明的第二方面提供一种禁止已翻译指令序列执行的装置,包括:
监测模块,用于判断已翻译指令序列对应的监测语句中包括的假设条件是否成立;
获取模块,用于若所述假设条件不成立,则从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址;
修改模块,用于修改所述已翻译指令序列首部的至少一条指令为跳转到所述固定处理例程的首地址的跳转指令序列,以执行所述跳转指令序列禁止所述已翻译指令序列的执行。
进一步地,上述装置,还包括:
存储模块,用于在所述获取模块从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址之前,在所述线程控制结构中增加一数据域;以及
将所述固定处理例程的首地址存储在所述数据域中;
上述获取模块,具体用于:
从所述数据域中获取所述固定处理例程的首地址。
进一步地,上述获取模块,具体用于:
获取所述线程控制结构的首地址;
将所述线程控制结构的首地址增加一个固定偏移量得到所述数据域对应的地址,所述固定偏移量为所述数据域在线程控制结构中对应的偏移量;
根据所述数据域对应的地址获取所述固定处理例程的首地址。
进一步地,上述跳转指令序列,包括加载指令和跳转指令,其中所述加载指令用于加载所述固定处理例程的首地址到临时寄存器,所述跳转指令用于跳转到所述临时寄存器中保存的固定处理例程的首地址。
本发明的第三方面提供一种虚拟机,包括如本发明的第二方面所述的禁止已翻译指令序列执行的装置。
本发明提供的禁止已翻译指令序列执行的方法和装置,通过当需要禁止已翻译指令序列执行时,从当前线程控制结构中获取固定处理例程的首地址,并原子性修改指令序列首部的至少一条指令为跳转到固定处理例程的首地址的指令,实现了一次跳转就可以禁止已翻译指令序列的执行,提高了禁止已翻译指令序列执行时的处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的禁止已翻译指令序列执行的方法实施例一的流程图;
图2为本发明提供的禁止已翻译指令序列执行的方法实施例二的流程图;
图3为图2所示方法实施例中获取固定处理例程首地址的流程图;
图4为本发明提供的禁止已翻译指令序列执行的方法实施例三的流程图;
图5为本发明提供的禁止已翻译指令序列执行的装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的禁止已翻译指令序列执行的方法实施例一的流程图,如图1所示,该方法实施例,包括如下步骤:
步骤101、判断已翻译指令序列对应的监测语句中包括的假设条件是否成立;
步骤102、若假设条件不成立,则从已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址;
步骤103、修改已翻译指令序列首部的至少一条指令为跳转到固定处理例程的首地址的跳转指令序列,以执行跳转指令序列禁止已翻译指令序列的执行。
其中,该修改指原子性修改。值得注意的是,此处“修改已翻译指令序列首部的至少一条指令”指根据实现该跳转功能所需指令的条数,确定所需修改的已翻译指令序列首部的指令条数,举例来说,若实现该跳转功能需要2条指令,则可通过硬件支持的访存指令原子性修改已翻译指令序列首部前2条指令为该跳转指令序列。
进一步地,在本发明实施例中该跳转指令序列,包括加载指令和跳转指令,其中加载指令用于加载固定处理例程的首地址到临时寄存器,跳转指令用于跳转到临时寄存器中保存的固定处理例程的首地址。
具体来说,执行已翻译指令序列时,若监测到监测语句中包含的假设条件不成立或者失效时,从当前线程控制结构获取固定处理例程的首地址,并通过硬件支持的访存指令原子性地将需要禁止执行的已翻译指令序列首部指令修改为跳转到固定处理例程的首地址的跳转指令序列:加载固定处理例程的首地址,并跳转到该固定处理例程的首地址,从而禁止已翻译指令序列的执行。在多线程环境下,硬件直接支持的原子性修改保证了其他线程执行的要么是修改前的指令序列要么是修改后的指令序列,从而保证了多线程安全。
现有技术中,需要使用短跳转指令跳转到指令序列头部所预留的存储空间的首地址,然后继续执行先前写入的远跳转指令序列来跳转到固定处理例程的首地址,需要执行2次跳转。
该方法实施例,通过从当前线程控制结构中获取固定处理例程的首地址,并原子性修改指令序列首部的至少一条指令为跳转到固定处理例程首地址的指令序列,实现了一次跳转就可以禁止已翻译指令序列的执行,提高了禁止已翻译指令序列执行时的处理效率。
图2为本发明提供的禁止已翻译指令序列执行的方法实施例二的流程图,该实施例在图1所示方法实施例一的基础上,主要包括步骤102的具体实施方式,如图2所示,该实施例,包括如下步骤:
步骤201、在线程控制结构中增加一数据域;
步骤202、将固定处理例程的首地址存储在数据域中;
步骤203、从数据域中获取固定处理例程的首地址。
其中,步骤203为图1所示方法实施例一中步骤102进一步的具体实施方式。
进一步地,图3为图2所示方法实施例中获取固定处理例程首地址的流程图,如图3所示,步骤203可包括的下述步骤:
步骤301、获取线程控制结构的首地址;
其中,可指定一个通用寄存器,用于存储当前线程控制结构的首地址,该通用寄存器不宜再参与翻译时的寄存器分配;若JIT在翻译过程中必须使用该寄存器,则要注意对其进行保护。由于对线程控制结构的访问十分频繁,将线程控制结构的首地址存储到通用寄存器中,可以加快频繁访问操作的速度,提高运行效率。
步骤302、将线程控制结构的首地址增加一个固定偏移量得到数据域对应的地址,固定偏移量为数据域在线程控制结构中对应的偏移量;
步骤303、根据数据域对应的地址获取固定处理例程的首地址。
具体来说,在虚拟机的线程控制结构中增加一数据域,专门用于保存禁止已翻译指令序列执行时,需要跳转到的固定处理例程的首地址。当有新线程创建时,进行线程初始化,同时向线程控制结构的新增数据域中存入上述固定处理例程的首地址,然后在执行方法对应的已翻译指令序列时,若需要禁止已翻译指令序列的执行,首先获取线程控制结构的首地址,然后根据数据域对应的固定偏移量获取该数据域对应的地址,并从该数据域中获取固定处理例程的首地址。
对于64位虚拟机而言,任一内存地址的表示仅需8字节,因此该数据域需占用8字节的存储空间,并且该线程控制结构中的该数据域保存的固定处理例程的首地址可适用于当前线程中包含的所有待执行的方法对应的指令序列。对于每个当前线程,其包含的待执行的方法可能包括成百上千个,以当前线程包含100个方法举例来说,现有技术中,通过在方法对应的指令序列头部预留存储空间以保存远跳转所需的指令序列,对于64位虚拟机,每个方法都需要预留8条指令的空间,每条指令4字节,此时需要预留的存储空间至少为100×8×4=3200字节。
该方法实施例,在图1所示方法实施例具有的技术效果的基础上,通过在线程控制结构中增加数据域以保存固定处理例程首地址,大大节省了禁止已翻译指令序列执行时需要的存储空间,并且可通过通用寄存器保存线程控制结构的首地址,以加快频繁访问操作的速度,提高运行效率。
图4为本发明提供的禁止已翻译指令序列执行的方法实施例三的流程图,该实施例在图1和图2所示方法实施例的基础上,以MIPS架构处理器64位虚拟机为例来进行说明该方法实施例的工作原理。需说明的,本发明提供的方法实施例适用于但不限于MIPS架构处理器这类不直接支持32位立即数跳转的处理器,举例来说,本发明提供的方法实施例还可以在Sparc架构的处理器上适用。如图4所示,该方法实施例,包括如下步骤:
步骤401、在线程控制结构中增加一个名为fixed_handler的数据域,用于保存禁止已翻译指令序列执行时,需要跳转到的固定处理例程的首地址;
步骤402、指定通用寄存器T9,专门用于存储当前线程控制结构的首地址,该通用寄存器T9不再参与翻译时的寄存器分配;
步骤403、创建新线程,进行线程初始化,将固定处理例程的首地址保存到线程控制结构中的“fixed_handler”数据域,并且将线程控制结构的首地址加载到寄存器T9中;
步骤404、执行目标程序,判断目标程序中的方法是否已翻译;
步骤405、若未翻译,判断该方法是否满足翻译条件,即判断该方法是否为热点方法;
步骤406、若满足翻译条件,则调用即时编译器进行翻译得到该方法对应的已翻译指令序列,并将已翻译指令序列的第一条指令按8字节对齐,以满足8字节原子访存操作要求;
步骤407、若已翻译,判断监测语句中包括的假设条件是否成立;
步骤408、若不成立,通过MIPS指令集提供的8字节访存指令“sd”,原子性地将需要禁止的已翻译指令序列首部的前面两条指令修改为下面两条指令:
“ld AT,off(T9)”
“jr AT”
sd指令是所有MIPS架构CPU均支持的一条标准指令,该指令是由CPU硬件直接支持的,用于对内存以8字节为单位进行写操作。经过上述修改,在执行已翻译指令序列时,首先通过ld指令加载线程控制结构fixed_handler数据域中保存的固定处理例程的首地址到临时寄存器AT,然后通过jr指令跳转到临时寄存器AT中保存的固定处理例程的首地址,以进行解释执行或者重新翻译等后续操作,其中,off为fixed_handler数据域在线程控制结构中对应的偏移量;
步骤409、若不满足翻译条件,调用解释器解释执行该方法;
步骤410、若已翻译且假设条件成立,执行该方法对应的已翻译指令序列。
其中,步骤401中,在线程控制结构中增加数据域以保存固定处理例程的首地址,不需要使用短跳转指令跳转到现有技术中指令序列头部所预留的存储空间的首地址,然后继续执行先前写入的远跳转指令序列来跳转到固定处理例程的首地址,减少了一次短跳转,提高了执行效率;步骤406中,可根据字节对齐需求进行对齐,若不需要字节对齐,则不需要执行字节对齐相关的步骤;步骤408,通过硬件支持的8字节访存指令进行原子性修改,在满足硬件原子性修改要求的同时,保证了多线程安全。
需说明的是步骤408中,不同的处理器,在实现相同功能时所用的指令不同,例如,对于Sparc处理器,可以通过ldx指令加载固定处理例程首地址,jmp指令跳转到该固定处理例程的首地址,然后通过访存指令stx修改已翻译指令序列首部的指令。
该方法实施例,通过从当前线程控制结构中获取固定处理例程的首地址,并原子性修改指令序列首部的至少一条指令为跳转到固定处理例程首地址的指令序列,实现了一次跳转就可以禁止已翻译指令序列的执行,提高了禁止已翻译指令序列执行时的处理效率,并且通过在线程控制结构中增加数据域以保存固定处理例程首地址,大大节省了禁止已翻译指令序列执行时需要的存储空间。
图5为本发明提供的禁止已翻译指令序列执行的装置的结构示意图,如图5所示,该禁止已翻译指令序列执行的装置500,包括:监测模块501、获取模块502、修改模块503和存储模块504,其中
监测模块501,用于判断已翻译指令序列对应的监测语句中包括的假设条件是否成立;
获取模块502,用于若假设条件不成立,则从已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址;
修改模块503,用于修改已翻译指令序列首部的至少一条指令为跳转到固定处理例程的首地址的跳转指令序列,以执行跳转指令序列禁止已翻译指令序列的执行。
存储模块504,用于在获取模块502从已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址之前,在线程控制结构中增加一数据域;以及
将固定处理例程的首地址存储在数据域中;
相应地,获取模块502,具体用于:
从数据域中获取固定处理例程的首地址。
进一步地,获取模块502,具体用于:
获取线程控制结构的首地址;
将线程控制结构的首地址增加一个固定偏移量得到数据域对应的地址,固定偏移量为数据域在线程控制结构中对应的偏移量;
根据数据域对应的地址获取固定处理例程的首地址。
进一步地,修改模块503中的跳转指令序列,包括加载指令和跳转指令,其中加载指令用于加载固定处理例程的首地址到临时寄存器,跳转指令用于跳转到临时寄存器中保存的固定处理例程的首地址。
该装置实施例,可以用于执行上述图1~图3所示的方法实施例中提供的技术方案和图4所示的方法实施例中的相应步骤,其实现原理和技术效果类似,不再赘述。
本发明还提供一种虚拟机,该虚拟机,可包括图5所示的装置实施例中给提供的禁止已翻译指令序列执行的装置500,可用于执行上述图1~图3所示的方法实施例中提供的技术方案和图4所示的方法实施例中的相应步骤,其实现原理和技术效果类似,不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种禁止已翻译指令序列执行的方法,其特征在于,包括:
判断已翻译指令序列对应的监测语句中包括的假设条件是否成立;
若所述假设条件不成立,则从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址;
修改所述已翻译指令序列首部的至少一条指令为跳转到所述固定处理例程的首地址的跳转指令序列,以执行所述跳转指令序列禁止所述已翻译指令序列的执行。
2.根据权利要求1所述的方法,其特征在于,所述从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址之前,还包括:
在所述线程控制结构中增加一数据域;
将所述固定处理例程的首地址存储在所述数据域中;
所述从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址,包括:
从所述数据域中获取所述固定处理例程的首地址。
3.根据权利要求2所述的方法,其特征在于,所述从所述数据域中获取所述固定处理例程的首地址,包括:
获取所述线程控制结构的首地址;
将所述线程控制结构的首地址增加一个固定偏移量得到所述数据域对应的地址,所述固定偏移量为所述数据域在线程控制结构中对应的偏移量;
根据所述数据域对应的地址获取所述固定处理例程的首地址。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述跳转指令序列,包括加载指令和跳转指令,其中所述加载指令用于加载所述固定处理例程的首地址到临时寄存器,所述跳转指令用于跳转到所述临时寄存器中保存的固定处理例程的首地址。
5.一种禁止已翻译指令序列执行的装置,其特征在于,包括:
监测模块,用于判断已翻译指令序列对应的监测语句中包括的假设条件是否成立;
获取模块,用于若所述假设条件不成立,则从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址;
修改模块,用于修改所述已翻译指令序列首部的至少一条指令为跳转到所述固定处理例程的首地址的跳转指令序列,以执行所述跳转指令序列禁止所述已翻译指令序列的执行。
6.根据权利要求5所述的装置,其特征在于,还包括:
存储模块,用于在所述获取模块从所述已翻译指令序列对应的线程控制结构中获取固定处理例程的首地址之前,在所述线程控制结构中增加一数据域;以及
将所述固定处理例程的首地址存储在所述数据域中;
所述获取模块,具体用于:
从所述数据域中获取所述固定处理例程的首地址。
7.根据权利要求6所述的装置,其特征在于,所述获取模块,具体用于:
获取所述线程控制结构的首地址;
将所述线程控制结构的首地址增加一个固定偏移量得到所述数据域对应的地址,所述固定偏移量为所述数据域在线程控制结构中对应的偏移量;
根据所述数据域对应的地址获取所述固定处理例程的首地址。
8.根据权利要求5~7任一项所述的装置,其特征在于,所述跳转指令序列,包括加载指令和跳转指令,其中所述加载指令用于加载所述固定处理例程的首地址到临时寄存器,所述跳转指令用于跳转到所述临时寄存器中保存的固定处理例程的首地址。
9.一种虚拟机,其特征在于,包括如权利要求4~6任一项所述的禁止已翻译指令序列执行的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410032331.3A CN103744641B (zh) | 2014-01-23 | 2014-01-23 | 禁止已翻译指令序列执行的方法、装置和虚拟机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410032331.3A CN103744641B (zh) | 2014-01-23 | 2014-01-23 | 禁止已翻译指令序列执行的方法、装置和虚拟机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744641A true CN103744641A (zh) | 2014-04-23 |
CN103744641B CN103744641B (zh) | 2016-08-17 |
Family
ID=50501661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410032331.3A Active CN103744641B (zh) | 2014-01-23 | 2014-01-23 | 禁止已翻译指令序列执行的方法、装置和虚拟机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103744641B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179935A (zh) * | 2016-03-11 | 2017-09-19 | 华为技术有限公司 | 一种指令执行方法及虚拟机 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299192A (zh) * | 2008-06-18 | 2008-11-05 | 中国科学院计算技术研究所 | 一种非对齐访存的处理方法 |
CN101706734A (zh) * | 2009-11-10 | 2010-05-12 | 中国科学院计算技术研究所 | 二进制翻译中间接跳转指令的翻译方法及其*** |
WO2013101191A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Virtual machine control structure shadowing |
-
2014
- 2014-01-23 CN CN201410032331.3A patent/CN103744641B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299192A (zh) * | 2008-06-18 | 2008-11-05 | 中国科学院计算技术研究所 | 一种非对齐访存的处理方法 |
CN101706734A (zh) * | 2009-11-10 | 2010-05-12 | 中国科学院计算技术研究所 | 二进制翻译中间接跳转指令的翻译方法及其*** |
WO2013101191A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Virtual machine control structure shadowing |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179935A (zh) * | 2016-03-11 | 2017-09-19 | 华为技术有限公司 | 一种指令执行方法及虚拟机 |
CN107179935B (zh) * | 2016-03-11 | 2021-01-29 | 华为技术有限公司 | 一种指令执行方法及虚拟机 |
Also Published As
Publication number | Publication date |
---|---|
CN103744641B (zh) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9075692B2 (en) | Method, device and system for activating on-line patch | |
US9652221B2 (en) | Runtime patching of an operating system (OS) without stopping execution | |
US7647589B1 (en) | Methods and systems for safe execution of guest code in virtual machine context | |
US9218467B2 (en) | Intra stack frame randomization for protecting applications against code injection attack | |
US8745596B2 (en) | Program debugging with dynamically inserted instrumentation | |
DE102014003540A1 (de) | Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor | |
KR102590679B1 (ko) | 벡터 요소들 내부의 비트 값들의 시험 | |
EP2942727B1 (en) | Return-oriented programming as an obfuscation technique | |
US9639343B2 (en) | Method for altering execution of a program, debugger, and computer-readable medium | |
WO2017096917A1 (zh) | 一种热补丁注入方法及装置 | |
CN107430664B (zh) | 具有托管代码和非托管代码的控制流完整性 | |
US9471343B2 (en) | Dynamic code injection | |
CN104063329B (zh) | 64位立即数处理方法及装置 | |
CN103744641A (zh) | 禁止已翻译指令序列执行的方法、装置和虚拟机 | |
US11113392B2 (en) | Executable binary code insertion | |
US20130117732A1 (en) | Technique to improve performance of software breakpoint handling | |
CN114385525A (zh) | 一种并发访问usb设备的方法及*** | |
JP2004240953A (ja) | コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。 | |
US11144329B2 (en) | Processor microcode with embedded jump table | |
CN107885529B (zh) | 终端应用的挂钩方法及装置 | |
US8561027B2 (en) | Reflection capability in static programming languages | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
US20230280987A1 (en) | System and method for controlling execution of call stack frames | |
CN104978227A (zh) | 一种进程控制方法、装置,及*** | |
US20150212800A1 (en) | Method and apparatus for generating symbol in high level programming language |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |