CN116501387A - 一种指令跳转方法、装置、电子设备及可读存储介质 - Google Patents

一种指令跳转方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN116501387A
CN116501387A CN202310724144.0A CN202310724144A CN116501387A CN 116501387 A CN116501387 A CN 116501387A CN 202310724144 A CN202310724144 A CN 202310724144A CN 116501387 A CN116501387 A CN 116501387A
Authority
CN
China
Prior art keywords
address
instruction
client
target
host
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
Application number
CN202310724144.0A
Other languages
English (en)
Other versions
CN116501387B (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.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
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 Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN202310724144.0A priority Critical patent/CN116501387B/zh
Publication of CN116501387A publication Critical patent/CN116501387A/zh
Application granted granted Critical
Publication of CN116501387B publication Critical patent/CN116501387B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明实施例提供一种指令跳转方法、装置、电子设备及可读存储介质,应用于二进制翻译系统,该方法包括:在执行目标跳转指令时,从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址;从预设寄存器中读取客户机地址和宿主机地址;将所述返回地址与所述客户机地址进行比对;若所述返回地址与所述客户机地址相同,则将所述宿主机地址确定为所述目标跳转指令的目标跳转地址;执行所述目标跳转指令,以跳转至所述目标跳转地址。本发明实施例无需在每次执行过程中都查找全局哈希表,降低了因查找全局哈希表造成的性能损失,从而提升了二进制翻译系统的系统性能。

Description

一种指令跳转方法、装置、电子设备及可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种指令跳转方法、装置、电子设备及可读存储介质。
背景技术
中央处理器(Central Processing Unit,CPU)指令集从指令的复杂程度角度划分,可以分为复杂指令集计算机(Complex Instruction Set Computer,CISC)指令和精简指令集计算机(Reduced Instruction Set Computer RISC,RISC)指令。其中,CISC指令数量多、适用频率差别大,指令长度不一;RISC指令数量少、适用频率相近、指令长度固定。更简化的RISC指令集使得设计多级流水线以及多级处理器缓存更为容易,从而提高了微处理器的性能。
随着微处理器工艺的不断发展,微处理器的性能已经变得越来越强,为了使得计算机可以同时处理不同CPU指令集,提高处理效率,二进制翻译技术应运而生。该技术能够使一种CPU体系架构的源程序运行在另一种CPU体系架构上,例如,可以将成熟的CPU体系架构的软件生态快速迁移至新生的CPU体系架构上。
二进制翻译系统是以翻译单元为基本单位工作的,对于以间接跳转指令结尾的翻译单元,在每次执行该翻译单元之前,都需要查找全局哈希表,以获取该间接跳转指令待返回的宿主机地址,这个查找过程会导致二进制翻译系统的性能损失。
发明内容
本发明实施例提供一种指令跳转方法、装置、电子设备及可读存储介质,可以提升二进制翻译系统的系统性能。
第一方面,本发明实施例公开了一种指令跳转方法,所述方法应用于二进制翻译系统,所述二进制翻译系统用于将客户机中的源程序翻译为宿主机中的目标程序,所述方法包括:
在执行目标跳转指令时,从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址;所述目标跳转指令是由所述二进制翻译系统对所述源程序中的所述函数返回指令进行翻译得到的;所述返回地址为所述函数返回指令在所述客户机中的跳转地址;
从预设寄存器中读取客户机地址和宿主机地址;所述预设寄存器用于记录二进制翻译过程中,所述函数返回指令待返回的客户机地址和宿主机地址,每翻译一次函数返回指令,所述预设寄存器被覆盖一次;
将所述返回地址与所述客户机地址进行比对;
若所述返回地址与所述客户机地址相同,则将所述宿主机地址确定为所述目标跳转指令的目标跳转地址;
执行所述目标跳转指令,以跳转至所述目标跳转地址。
可选地,所述执行所述目标跳转指令,以跳转至所述目标跳转地址之前,所述方法还包括:
若所述返回地址与所述客户机地址不相同,则在全局哈希表中查询所述返回地址对应的宿主机地址,并将所述返回地址对应的宿主机地址确定为所述目标跳转指令的目标跳转地址;
若所述全局哈希表中不存在所述返回地址对应的宿主机地址,则对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序,并根据所述目标程序的存储地址确定所述目标跳转指令的目标跳转地址。
可选地,所述从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址之前,所述方法还包括:
获取所述源程序中的函数调用指令对应的函数返回指令待返回的客户机地址;
对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序;
根据所述目标程序在所述宿主机中的存储地址确定所述函数返回指令待返回的宿主机地址;
将所述客户机地址和所述宿主机地址存储在预设寄存器中。
可选地,所述预设寄存器用于记录至少两个线程对应的客户机地址和宿主机地址,一个线程对应一对地址;所述从预设寄存器中读取客户机地址和宿主机地址,包括:
从预设结构体中获取所述目标程序所在的第一线程对应的运行数据;
根据所述运行数据将所述预设寄存器中记录的地址恢复为所述第一线程对应的地址;
从恢复后的预设寄存器中读取客户机地址和宿主机地址。
可选地,所述将所述客户机地址和所述宿主机地址存储在预设寄存器中之后,所述方法还包括:
触发例外操作,以对所述预设寄存器的标志位进行标记;所述标志位用于指示所述预设寄存器中记录的地址是否被修改。
可选地,所述方法还包括:
在接收到针对第二线程的调度操作的情况下,若所述预设寄存器的标志位被标记,则将所述预设寄存器中记录的地址存储至所述预设结构体中;所述第二线程为除所述第一线程以外的其他线程。
可选地,所述函数调用指令的存储地址与所述客户机地址连续相邻,且所述函数调用指令的存储地址在所述客户机地址之前。
另一方面,本发明实施例公开了一种指令跳转装置,所述装置应用于二进制翻译系统,所述二进制翻译系统用于将客户机中的源程序翻译为宿主机中的目标程序,所述装置包括:
第一获取模块,用于在执行目标跳转指令时,从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址;所述目标跳转指令是由所述二进制翻译系统对所述源程序中的所述函数返回指令进行翻译得到的;所述返回地址为所述函数返回指令在所述客户机中的跳转地址;
第二获取模块,用于从预设寄存器中读取客户机地址和宿主机地址;所述预设寄存器用于记录二进制翻译过程中,所述函数返回指令待返回的客户机地址和宿主机地址,每翻译一次函数返回指令,所述预设寄存器被覆盖一次;
数据比对模块,用于将所述返回地址与所述客户机地址进行比对;
地址确定模块,用于若所述返回地址与所述客户机地址相同,则将所述宿主机地址确定为所述目标跳转指令的目标跳转地址;
指令执行模块,用于执行所述目标跳转指令,以跳转至所述目标跳转地址。
可选地,所述装置还包括:
查找模块,用于若所述返回地址与所述客户机地址不相同,则在全局哈希表中查询所述返回地址对应的宿主机地址,并将所述返回地址对应的宿主机地址确定为所述目标跳转指令的目标跳转地址;
第一翻译模块,用于若所述全局哈希表中不存在所述返回地址对应的宿主机地址,则对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序,并根据所述目标程序的存储地址确定所述目标跳转指令的目标跳转地址。
可选地,所述装置还包括:
第三获取模块,用于获取所述源程序中的函数调用指令对应的函数返回指令待返回的客户机地址;
第二翻译模块,用于对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序;
第二确定模块,用于根据所述目标程序在所述宿主机中的存储地址确定所述函数返回指令待返回的宿主机地址;
第一存储模块,用于将所述客户机地址和所述宿主机地址存储在预设寄存器中。
可选地,所述预设寄存器用于记录至少两个线程对应的客户机地址和宿主机地址,一个线程对应一对地址;所述第二获取模块,包括:
运行数据获取子模块,用于从预设结构体中获取所述目标程序所在的第一线程对应的运行数据;
记录恢复子模块,用于根据所述运行数据将所述预设寄存器中记录的地址恢复为所述第一线程对应的地址;
地址读取子模块,用于从恢复后的预设寄存器中读取客户机地址和宿主机地址。
可选地,所述装置还包括:
例外触发模块,用于触发例外操作,以对所述预设寄存器的标志位进行标记;所述标志位用于指示所述预设寄存器中记录的地址是否被修改。
可选地,所述装置还包括:
第二存储模块,用于在接收到针对第二线程的调度操作的情况下,若所述预设寄存器的标志位被标记,则将所述预设寄存器中记录的地址存储至所述预设结构体中;所述第二线程为除所述第一线程以外的其他线程。
可选地,所述函数调用指令的存储地址与所述客户机地址连续相邻,且所述函数调用指令的存储地址在所述客户机地址之前。
再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括有处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行前述的指令跳转方法。
本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的指令跳转方法。
本发明实施例包括以下优点:
本发明实施例提供了一种指令跳转方法,通过预设寄存器来存储间接跳转指令的跳转关系,从而在执行目标跳转指令时,通过查询预设寄存器来获取目标跳转指令的宿主机地址,无需在每次执行过程中都查找全局哈希表,降低了因查找全局哈希表造成的性能损失,从而提升了二进制翻译系统的系统性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种指令跳转方法实施例的步骤流程图;
图2是本发明的一种函数调度流程示意图;
图3是本发明的一种二进制翻译系统中翻译单元的划分示意图;
图4是本发明的一种二进制翻译系统的翻译流程示意图;
图5是本发明的一种函数调用的翻译示意图;
图6是本发明的一种二进制翻译示意图;
图7是本发明的一种指令跳转装置实施例的结构框图;
图8是本发明示例提供的一种用于指令跳转的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
方法实施例
参照图1,示出了本发明的一种指令跳转方法实施例的步骤流程图,所述方法应用于二进制翻译系统,用于将客户机中的源程序翻译为宿主机中的目标程序,所述方法具体可以包括如下步骤:
步骤101、在执行目标跳转指令时,从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址;所述目标跳转指令是由所述二进制翻译系统对所述源程序中的所述函数返回指令进行翻译得到的;所述返回地址为所述函数返回指令在所述客户机中的跳转地址。
步骤102、从预设寄存器中读取客户机地址和宿主机地址;所述预设寄存器用于记录二进制翻译过程中,所述函数返回指令待返回的客户机地址和宿主机地址,每翻译一次函数返回指令,所述预设寄存器被覆盖一次。
步骤103、将所述返回地址与所述客户机地址进行比对。
步骤104、若所述返回地址与所述客户机地址相同,则将所述宿主机地址确定为所述目标跳转指令的目标跳转地址。
步骤105、执行所述目标跳转指令,以跳转至所述目标跳转地址。
本发明实施例提供的指令跳转方法,可以应用于二进制翻译系统,所述二进制翻译系统用于将客户机中的源程序翻译为宿主机中的目标程序。本发明实施例中的目标跳转指令,为宿主机的目标程序中的间接跳转指令,所述目标跳转指令是由所述二进制翻译系统对所述源程序中的所述函数返回指令进行翻译得到的;函数返回指令为客户机的源程序中的指令。在源程序中,函数返回指令与函数调用指令相匹配。参照图2,示出了一种函数调度流程示意图,如图2所示,在源程序中,通过执行函数调用指令(CALL Fun A),可以实现对被调用函数(Function A)的调用,也即使得程序不再顺序执行函数调用指令CALL Fun A的下一条指令,而是跳转至函数Function A的存储地址中,读取并执行函数Function A。执行函数Function A之后,程序通过执行函数返回指令RET跳转至函数调用指令CALL Fun A的下一条指令的存储地址中,继续读取并执行函数调用指令CALL Fun A的下一条指令。从图2中可以看出,一条函数返回指令可能存在多个返回地址。
需要说明的是,所述源程序为二进制码。在翻译过程中,二进制翻译系统只能拿到经过编译处理的二进制代码(即源程序),对二进制代码进行反汇编处理后,得到汇编级别的代码;此时,无法以源程序中的函数为基本单元对代码进行切分。因此,通常情况下,二进制翻译系统将获得到的源程序切分为一个又一个的翻译单元(Translate Block,TB),每个翻译单元的最后一条指令通常为源程序中的跳转指令。参照图3,示出了二进制翻译系统中翻译单元的划分示意图。如图3所示,二进制翻译系统以翻译单元为基本单位进行工作。其中,翻译单元TB1和TB2的最后一条指令均为源程序中的跳转指令“beq r1,r2,offset1”。在二进制翻译过程中,往往会插入大量的B指令,例如,对翻译单元TB1和TB2进行翻译之后,宿主程序中被插入了指令“b offset0”。
二进制翻译系统在宿主机中执行,此时源程序无法被直接运行,客户机中的源程序需要被翻译成宿主机中的目标程序,在翻译过程中,客户机地址(Guest PC)中的代码被翻译到宿主机地址(Host PC)中,这导致源程序中的跳转关系无法直接使用,需要映射为宿主机中的跳转关系。对于直接跳转指令,因其跳转目标有限,因此可以直接将Guest PC对应的Host PC压入程序栈中,形成稳定的跳转关系。
间接跳转指令的跳转地址是在程序执行的过程中动态生成的,同一条间接跳转指令可能对应多个跳转地址,而二进制翻译系统在宿主机上模拟客户机中程序计算地址的过程,因此在程序执行时,间接跳转指令的目标跳转地址是间接跳转指令在宿主机中的跳转地址,也即Host PC,并不是程序栈中存储的Guest PC。在执行间接跳转指令时,二进制翻译系统需要从执行态切换为翻译态,通过查找全局哈希表获取Guest PC对应的Host PC。全局哈希表中存储对Guest PC进行哈希运算后的Host PC。
可以理解的是,二进制翻译系统存在翻译态和执行态两个状态,参照图4,示出了一种二进制翻译系统的翻译流程示意图,如图4所示,二进制翻译系统首先需要对客户机中的源程序,也即待翻译程序,以跳转指令为切分点对源程序进行切分处理,得到翻译单元。接下来,对切分的翻译单元进行反汇编处理,得到翻译单元对应的汇编程序。具体地,二进制翻译系统进入翻译态,对第一个TB进行反汇编处理,得到第一个TB对应的汇编程序。最后,二进制翻译系统调用相应的翻译函数对得到的汇编程序进行翻译处理,就可以得到第一个TB对应的目标程序。其中,翻译函数可以选用本领域中擅长进行指令翻译处理的任意函数。第一个TB翻译完成之后,二进制翻译系统进入到执行态,执行第一个TB对应的目标程序。当目标程序中的各条指令均执行结束后,二进制翻译系统会重新切换到翻译态,继续对下一个TB进行翻译处理,以此类推,直至各个翻译单元均被翻译且执行结束。
对于以间接跳转指令为结尾的TB,在每一次执行过程中,均需要进行全局哈希表的查找以获取间接跳转指令的Host PC,查找过程中需要额外执行数条访存指令以及定点运算指令,降低了程序执行效率,进而造成了二进制翻译系统的性能损失。
为了提升二进制翻译系统的处理效率,减少系统性能损失,本发明实施例提供了一种指令跳转方法,通过预设寄存器来存储间接跳转指令的跳转关系,从而在执行目标跳转指令,也即间接跳转指令时,通过查询预设寄存器来获取目标跳转指令的宿主机地址,无需在每次执行过程中都查询全局哈希表,降低了因查找全局哈希表造成的性能损失,从而提升了二进制翻译系统的系统性能。
参照图5,示出了一种函数调用的翻译示意图。以将x86架构中的源程序“TB0”翻译到LoongArch架构中为例,如图5所示,TB0以函数调用指令“call FunA”为结尾。在相关技术中(如图5中位于中间的TB0所示),直接将函数调用指令“call FunA”的返回地址压入程序栈中(push stack,tmp),然后在执行翻译后的目标指令时,从全局哈希表中查询函数调用指令“call FunA”返回的客户机地址Guest PC对应的宿主机地址Host PC。而在本发明实施例中(如图5中位于右侧的TB0所示),预先将目标跳转指令对应的客户机地址和宿主机地址存储至预设寄存器中。例如,通过执行指令“store scr0,x86pc”将客户机地址x86pc(也即函数调用指令“call FunA”的下一条指令的地址)加载至预设寄存器scr0中,通过执行指令“store scr1,TB1”,将宿主机地址TB1加载至预设寄存器scr1中。
在本发明实施例中,二进制翻译系统如果在目标跳转指令时,也即宿主机的目标程序中的间接跳转指令,可以先从程序栈中获取该目标跳转指令对应的函数返回指令的返回地址。可以理解的是,程序栈中存储的返回地址,为函数返回指令在客户机中的跳转地址。结合图2所示的函数调用流程示意图可知,该返回地址中存储的指令,为该函数返回指令对应的函数调用指令的下一条指令。函数返回指令的返回地址可以根据源程序的程序跳转逻辑以及源程序中各条指令的存储地址确定。
接下来,从预设寄存器中读取客户机地址和宿主机地址。其中,所述预设寄存器用于记录二进制翻译过程中,所述函数返回指令待返回的客户机地址和宿主机地址,每翻译一次函数返回指令,所述预设寄存器被覆盖一次。本申请实施中的预设寄存器,可以是硬件特殊寄存器,例如LoongArch指令集中特有的64位SCR寄存器。示例性地,所述预设寄存器可以包含两个寄存器,其中一个寄存器用于存储客户机地址,另一个寄存器用于存储宿主机地址。由于每翻译一次函数返回指令,预设寄存器就会被覆盖一次,因此预设寄存器中存储的客户机地址和宿主机地址是一一对应的,均对应于同一条函数返回指令。
如果从预设寄存器中读取的客户机地址与函数返回指令的返回地址一致,说明预设寄存器中此时存储的客户机地址和宿主机地址与该函数返回指令相匹配,因此可以直接将读取的宿主机地址确定为目标跳转指令的目标跳转地址。执行该目标跳转指令,就可以跳转至该目标跳转地址。
可选地,所述执行所述目标跳转指令,以跳转至所述目标跳转地址之前,所述方法还包括:
步骤S11、若所述返回地址与所述客户机地址不相同,则在全局哈希表中查询所述返回地址对应的宿主机地址,并将所述返回地址对应的宿主机地址确定为所述目标跳转指令的目标跳转地址;
步骤S12、若所述全局哈希表中不存在所述返回地址对应的宿主机地址,则对所述返回地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序,并根据所述目标程序的存储地址确定所述目标跳转指令的目标跳转地址。
如果从预设寄存器中读取的客户机地址与函数返回指令的返回地址不一致,说明预设寄存器中此时存储的客户机地址和宿主机地址与该函数返回指令不匹配,不能直接将读取的宿主机地址作为目标跳转指令的跳转地址。在这种情况下,可以在全局哈希表中查询函数返回指令的返回地址对应的宿主机地址,并将从全局哈希表中查找到的宿主机地址确定为目标跳转指令的目标跳转地址。
进一步地,如果全局哈希表中不存在函数返回指令的返回地址对应的宿主机地址,说明此时该返回地址中存储的指令对应的翻译单元可能还未被翻译,因此可以返回翻译态,对返回地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序,并根据目标程序的存储地址确定目标跳转指令的目标跳转地址。示例性地,目标跳转指令的目标跳转地址可以是翻译后的目标程序中第一条指令的存储地址,或者该目标程序对应的存储空间的首地址。
下面以客户机为搭载x86体系的电子设备,宿主机为搭载LoongArch体系的电子设备为例,对本发明实施例提供的指令跳转方法进行说明。参照图6,示出了本发明实施例提供的一种二进制翻译示意图。如图6所示,翻译单元TB0的最后一条指令为函数返回指令RET。如果直接按照现有技术中的二进制翻译方法(如图6中位于中间的TB0所示)该函数返回指令RET被翻译为间接跳转指令“b jmp_glue”,在执行该间接跳转指令时,二进制翻译系统需要从执行态切换为翻译态,通过查找全局哈希表获取Guest PC对应的Host PC。
而在本发明实施例中(如图6中位于右侧的TB0所示),在执行该间接跳转指令之前,可以先通过执行指令“pop tmp,x86pc”,从程序栈中取出源程序中函数返回指令RET的返回地址“x86pc”。接下来,通过执行指令“load tmp1,scr1”,从预设寄存器scr1中取出存储的宿主机地址tmp1;再通过执行指令“bne tmp,GPC,2”,比对从程序栈中取出的返回地址x86pc与从预设寄存器scr0中取出的客户机地址GPC是否相等,如果返回地址x86pc与客户机地址GPC相等,则通过执行指令“jirl tmp1”,直接将从预设寄存器scr1中取出的宿主机地址tmp1作为目标跳转地址。如果返回地址与客户机地址不相等,再执行指令“b jmp_glue”,以查找全局哈希表,对返回地址x86pc进行哈希运算,并利用计算得到的哈希值查找对应的宿主机地址Host PC,将查找到的Host PC确定为目标跳转地址。
在本发明实施例中,只需要在预设寄存器中存储的客户机地址与目标跳转指令对应的函数返回指令的返回地址不一致的时候查询全局哈希表,减少了二进制翻译过程中对全局哈希表的查询次数,提升了程序执行效率,降低了因查找全局哈希表造成的性能损失,从而提升了二进制翻译系统的系统性能。
在本发明的一种可选实施例中,步骤101所述从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址之前,所述方法还包括:
步骤S21、获取所述源程序中的函数调用指令对应的函数返回指令待返回的客户机地址;
步骤S22、对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序;
步骤S23、根据所述目标程序在所述宿主机中的存储地址确定所述函数返回指令待返回的宿主机地址;
步骤S24、将所述客户机地址和所述宿主机地址存储在预设寄存器中。
在本申请实施例中,在遇到以函数调用指令为结尾的翻译单元时,也可以对调用结束之后返回的翻译单元,也即函数调用指令对应的函数返回指令待返回的客户机地址中存储的指令所属的翻译单元,进行预翻译。
作为一种示例,假设翻译单元TB0的最后一条指令为函数调用指令CALL,该函数调用指令对应的函数返回指令RET所属的翻译单元为TB1,函数返回指令RET的返回地址中存储的指令NET所属的翻译单元为TB2,其中,在源程序中,指令NET为函数调用指令的下一条指令,换言之,函数调用指令CALL的存储地址与指令NET的存储地址连续相邻,且函数调用指令CALL的存储地址与指令NET的存储地址之前。可以理解的是,指令NET的存储地址即为函数返回指令RET的返回地址。
按照二进制翻译系统的处理流程,执行翻译单元TB0对应的目标程序之后,对翻译单元TB1进行翻译处理,并在翻译单元TB1对应的目标程序执行结束之后,再对翻译单元TB2进行翻译处理。在执行翻译单元TB1对应的目标程序时,由于函数返回指令的返回地址中存储的指令NET所属的翻译单元TB2尚未被翻译,此时无法确定函数返回指令的返回地址对应的宿主机地址,也即无法确定对函数返回指令进行翻译得到的目标跳转指令待跳转的宿主机地址。如果按照现有技术中二进制翻译流程进行处理,二进制翻译系统需要在执行目标跳转指令之前,从执行态切换到翻译态,对翻译单元TB2进行翻译处理以确定目标跳转指令待跳转的宿主机地址,然后再返回执行态执行目标跳转指令。二进制翻译系统在进行状态切换时,需要进行上下文切换,造成了较大的性能开销。
在本发明实施例中,在遇到以函数调到用指令为结尾的翻译单元时,可以先对函数调用指令所属的翻译单元如TB0、对应的函数返回指令所属的翻译单元如TB1以及函数返回指令的返回地址中存储的指令所属的翻译单元如TB2均进行翻译处理,并将函数返回指令的返回地址,也即待返回的客户机地址,以及该客户机地址对应的宿主机地址存储在预设寄存器中。然后,再按照源程序中的指令执行顺序,依次执行翻译单元TB0、TB1和TB2对应的目标程序,从而减少二进制翻译系统的状态切换,降低因上下文切换导致的性能开销。
可选地,所述函数调用指令的存储地址与所述客户机地址连续相邻,且所述函数调用指令的存储地址在所述客户机地址之前。
在本发明的一种可选实施例中,所述预设寄存器用于记录至少两个线程对应的客户机地址和宿主机地址,一个线程对应一对地址;所述从预设寄存器中读取客户机地址和宿主机地址,包括:
步骤S31、从预设结构体中获取所述目标程序所在的第一线程对应的运行数据;
步骤S32、根据所述运行数据将所述预设寄存器中记录的地址恢复为所述第一线程对应的地址;
步骤S33、从恢复后的预设寄存器中读取客户机地址和宿主机地址。
本发明实施例中的预设寄存器可以被多个线程调用。二进制翻译系统可以运行多个程序,每个程序对应一个线程,系统通过高频率的线程切换实现多个程序的同时运行。可以理解的是,在同一时刻,每个线程对应一对地址,包括线程中目标跳转指令对应的客户机地址和宿主机地址。
为了保证程序的正常运行,二进制翻译系统可以通过预设结构体记录各个线程的运行数据,并在每次进行线程切换后,从预设结构体中获取目标程序所在的第一线程的运行数据,然后根据运行数据将预设寄存器中记录的地址恢复为该第一线程对应的地址,以便在执行目标跳转指令时,从恢复后的预设寄存器中读取客户机地址和宿主机地址。
作为一种示例,假设程序A1对应线程B1,程序A2对应线程B2,当前系统中执行线程B1,预设寄存器中记录的线程B1对应的地址为Guest PC1和Host PC1,预设结构体中记录的线程B2对应的地址为Guest PC2和Host PC2。系统切换为执行线程B2后,从预设结构体中获取Guest PC2和Host PC2并将预设寄存器中记录的地址恢复为线程B2对应的地址,在执行线程B2对应的目标跳转指令时,二进制翻译系统从预设寄存器中读取的地址就是线程B2对应的地址,从而有效避免了各个线程之间的运行数据干扰,保证了程序的正确运行。
可选地,所述将所述客户机地址和所述宿主机地址存储在预设寄存器中之后,所述方法还包括:
触发例外操作,以对所述预设寄存器的标志位进行标记;所述标志位用于指示所述预设寄存器中记录的地址是否被修改。
在本发明实施例中,可以在执行对预设寄存器的修改之后,触发例外操作,对预设寄存器的标志位进行标记。需要说明的是,如果预设寄存器的标志位被标记,说明预设寄存器中记录的地址已经被修改,如果后续执行线程切换操作,需要将预设寄存器中记录的地址恢复为修改之前的地址。
如果预设寄存器的标志位没有被标记,说明预设寄存器中记录的地址没有被修改,因此不需要对预设寄存器中记录的地址进行保存、恢复处理。
可选地,所述方法还包括:
在接收到针对第二线程的调度操作的情况下,若所述预设寄存器的标志位被标记,则将所述预设寄存器中记录的地址存储至所述预设结构体中;所述第二线程为除所述第一线程以外的其他线程。
在本发明实施例中,如果二进制翻译系统接收到针对第二线程的调度操作,且预设寄存器的标志位被标记,则需要将预设寄存器中记录的地址存储至预设结构体中,也即保存第一线程对应的地址。然后,在切换回第一线程后,从预设结构体中获取第一线程对应的地址。
综上,本发明实施例提供了一种指令跳转方法,通过预设寄存器来存储间接跳转指令的跳转关系,从而在执行目标跳转指令时,通过查询预设寄存器来获取目标跳转指令的宿主机地址,无需在每次执行过程中都查找全局哈希表,降低了因查找全局哈希表造成的性能损失,从而提升了二进制翻译系统的系统性能。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图7,示出了本发明的一种指令跳转装置实施例的结构框图,所述装置应用于二进制翻译系统,所述二进制翻译系统用于将客户机中的源程序翻译为宿主机中的目标程序,所述装置具体可以包括:
第一获取模块701,用于在执行目标跳转指令时,从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址;所述目标跳转指令是由所述二进制翻译系统对所述源程序中的所述函数返回指令进行翻译得到的;所述返回地址为所述函数返回指令在所述客户机中的跳转地址;
第二获取模块702,用于从预设寄存器中读取客户机地址和宿主机地址;所述预设寄存器用于记录二进制翻译过程中,所述函数返回指令待返回的客户机地址和宿主机地址,每翻译一次函数返回指令,所述预设寄存器被覆盖一次;
数据比对模块703,用于将所述返回地址与所述客户机地址进行比对;
第一确定模块704,用于若所述返回地址与所述客户机地址相同,则将所述宿主机地址确定为所述目标跳转指令的目标跳转地址;
指令执行模块705,用于执行所述目标跳转指令,以跳转至所述目标跳转地址。
可选地,所述装置还包括:
查找模块,用于若所述返回地址与所述客户机地址不相同,则在全局哈希表中查询所述返回地址对应的宿主机地址,并将所述返回地址对应的宿主机地址确定为所述目标跳转指令的目标跳转地址;
第一翻译模块,用于若所述全局哈希表中不存在所述返回地址对应的宿主机地址,则对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序,并根据所述目标程序的存储地址确定所述目标跳转指令的目标跳转地址。
可选地,所述装置还包括:
第三获取模块,用于获取所述源程序中的函数调用指令对应的函数返回指令待返回的客户机地址;
第二翻译模块,用于对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序;
第二确定模块,用于根据所述目标程序在所述宿主机中的存储地址确定所述函数返回指令待返回的宿主机地址;
第一存储模块,用于将所述客户机地址和所述宿主机地址存储在预设寄存器中。
可选地,所述预设寄存器用于记录至少两个线程对应的客户机地址和宿主机地址,一个线程对应一对地址;所述第二获取模块,包括:
运行数据获取子模块,用于从预设结构体中获取所述目标程序所在的第一线程对应的运行数据;
记录恢复子模块,用于根据所述运行数据将所述预设寄存器中记录的地址恢复为所述第一线程对应的地址;
地址读取子模块,用于从恢复后的预设寄存器中读取客户机地址和宿主机地址。
可选地,所述装置还包括:
例外触发模块,用于触发例外操作,以对所述预设寄存器的标志位进行标记;所述标志位用于指示所述预设寄存器中记录的地址是否被修改。
可选地,所述装置还包括:
第二存储模块,用于在接收到针对第二线程的调度操作的情况下,若所述预设寄存器的标志位被标记,则将所述预设寄存器中记录的地址存储至所述预设结构体中;所述第二线程为除所述第一线程以外的其他线程。
可选地,所述函数调用指令的存储地址与所述客户机地址连续相邻,且所述函数调用指令的存储地址在所述客户机地址之前。
综上,本发明实施例提供了一种一种指令跳转装置,通过预设寄存器来存储间接跳转指令的跳转关系,从而在执行目标跳转指令时,通过查询预设寄存器来获取目标跳转指令的宿主机地址,无需在每次执行过程中都查找全局哈希表,降低了因查找全局哈希表造成的性能损失,从而提升了二进制翻译系统的系统性能。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图8,是本发明实施例提供的一种用于指令跳转的电子设备的结构示意图。如图8所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行前述实施例的指令跳转方法。
本发明实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备(服务器或者终端)的处理器执行时,使得处理器能够执行图1所示的指令跳转方法。所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种指令跳转方法、装置、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (16)

1.一种指令跳转方法,其特征在于,所述方法应用于二进制翻译系统,所述二进制翻译系统用于将客户机中的源程序翻译为宿主机中的目标程序,所述方法包括:
在执行目标跳转指令时,从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址;所述目标跳转指令是由所述二进制翻译系统对所述源程序中的所述函数返回指令进行翻译得到的;所述返回地址为所述函数返回指令在所述客户机中的跳转地址;
从预设寄存器中读取客户机地址和宿主机地址;所述预设寄存器用于记录二进制翻译过程中,所述函数返回指令待返回的客户机地址和宿主机地址,每翻译一次函数返回指令,所述预设寄存器被覆盖一次;
将所述客户机地址与所述返回地址进行比对;
若所述客户机地址与所述返回地址相同,则将所述宿主机地址确定为所述目标跳转指令的目标跳转地址;
执行所述目标跳转指令,以跳转至所述目标跳转地址。
2.根据权利要求1所述的方法,其特征在于,所述执行所述目标跳转指令,以跳转至所述目标跳转地址之前,所述方法还包括:
若所述返回地址与所述客户机地址不相同,则在全局哈希表中查询所述返回地址对应的宿主机地址,并将所述返回地址对应的宿主机地址确定为所述目标跳转指令的目标跳转地址;
若所述全局哈希表中不存在所述返回地址对应的宿主机地址,则对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序,并根据所述目标程序的存储地址确定所述目标跳转指令的目标跳转地址。
3.根据权利要求1所述的方法,其特征在于,所述从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址之前,所述方法还包括:
获取所述源程序中的函数调用指令对应的函数返回指令待返回的客户机地址;
对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序;
根据所述目标程序在所述宿主机中的存储地址确定所述函数返回指令待返回的宿主机地址;
将所述客户机地址和所述宿主机地址存储在预设寄存器中。
4.根据权利要求3所述的方法,其特征在于,所述预设寄存器用于记录至少两个线程对应的客户机地址和宿主机地址,一个线程对应一对地址;所述从预设寄存器中读取客户机地址和宿主机地址,包括:
从预设结构体中获取所述目标程序所在的第一线程对应的运行数据;
根据所述运行数据将所述预设寄存器中记录的地址恢复为所述第一线程对应的地址;
从恢复后的预设寄存器中读取客户机地址和宿主机地址。
5.根据权利要求4所述的方法,其特征在于,所述将所述客户机地址和所述宿主机地址存储在预设寄存器中之后,所述方法还包括:
触发例外操作,以对所述预设寄存器的标志位进行标记;所述标志位用于指示所述预设寄存器中记录的地址是否被修改。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在接收到针对第二线程的调度操作的情况下,若所述预设寄存器的标志位被标记,则将所述预设寄存器中记录的地址存储至所述预设结构体中;所述第二线程为除所述第一线程以外的其他线程。
7.根据权利要求3所述的方法,其特征在于,所述函数调用指令的存储地址与所述客户机地址连续相邻,且所述函数调用指令的存储地址在所述客户机地址之前。
8.一种指令跳转装置,其特征在于,所述装置应用于二进制翻译系统,所述二进制翻译系统用于将客户机中的源程序翻译为宿主机中的目标程序,所述装置包括:
第一获取模块,用于在执行目标跳转指令时,从程序栈中获取所述目标跳转指令对应的函数返回指令的返回地址;所述目标跳转指令是由所述二进制翻译系统对所述源程序中的所述函数返回指令进行翻译得到的;所述返回地址为所述函数返回指令在所述客户机中的跳转地址;
第二获取模块,用于从预设寄存器中读取客户机地址和宿主机地址;所述预设寄存器用于记录二进制翻译过程中,所述函数返回指令待返回的客户机地址和宿主机地址,每翻译一次函数返回指令,所述预设寄存器被覆盖一次;
数据比对模块,用于将所述返回地址与所述客户机地址进行比对;
地址确定模块,用于若所述返回地址与所述客户机地址相同,则将所述宿主机地址确定为所述目标跳转指令的目标跳转地址;
指令执行模块,用于执行所述目标跳转指令,以跳转至所述目标跳转地址。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
查找模块,用于若所述返回地址与所述客户机地址不相同,则在全局哈希表中查询所述返回地址对应的宿主机地址,并将所述返回地址对应的宿主机地址确定为所述目标跳转指令的目标跳转地址;
第一翻译模块,用于若所述全局哈希表中不存在所述返回地址对应的宿主机地址,则对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序,并根据所述目标程序的存储地址确定所述目标跳转指令的目标跳转地址。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第三获取模块,用于获取所述源程序中的函数调用指令对应的函数返回指令待返回的客户机地址;
第二翻译模块,用于对所述客户机地址中存储的指令所属的翻译单元进行翻译处理,得到目标程序;
第二确定模块,用于根据所述目标程序在所述宿主机中的存储地址确定所述函数返回指令待返回的宿主机地址;
第一存储模块,用于将所述客户机地址和所述宿主机地址存储在预设寄存器中。
11.根据权利要求10所述的装置,其特征在于,所述预设寄存器用于记录至少两个线程对应的客户机地址和宿主机地址,一个线程对应一对地址;所述第二获取模块,包括:
运行数据获取子模块,用于从预设结构体中获取所述目标程序所在的第一线程对应的运行数据;
记录恢复子模块,用于根据所述运行数据将所述预设寄存器中记录的地址恢复为所述第一线程对应的地址;
地址读取子模块,用于从恢复后的预设寄存器中读取客户机地址和宿主机地址。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
例外触发模块,用于触发例外操作,以对所述预设寄存器的标志位进行标记;所述标志位用于指示所述预设寄存器中记录的地址是否被修改。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第二存储模块,用于在接收到针对第二线程的调度操作的情况下,若所述预设寄存器的标志位被标记,则将所述预设寄存器中记录的地址存储至所述预设结构体中;所述第二线程为除所述第一线程以外的其他线程。
14.根据权利要求10所述的装置,其特征在于,所述函数调用指令的存储地址与所述客户机地址连续相邻,且所述函数调用指令的存储地址在所述客户机地址之前。
15.一种电子设备,其特征在于,所述电子设备包括有处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至7中任一项所述的指令跳转方法。
16.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至7中任一项所述的指令跳转方法。
CN202310724144.0A 2023-06-16 2023-06-16 一种指令跳转方法、装置、电子设备及可读存储介质 Active CN116501387B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310724144.0A CN116501387B (zh) 2023-06-16 2023-06-16 一种指令跳转方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310724144.0A CN116501387B (zh) 2023-06-16 2023-06-16 一种指令跳转方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN116501387A true CN116501387A (zh) 2023-07-28
CN116501387B CN116501387B (zh) 2023-09-12

Family

ID=87323277

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310724144.0A Active CN116501387B (zh) 2023-06-16 2023-06-16 一种指令跳转方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN116501387B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116956270A (zh) * 2023-09-18 2023-10-27 星汉智能科技股份有限公司 应用程序运行方法、运行环境re、电子设备、存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452395A (zh) * 2007-11-28 2009-06-10 无锡江南计算技术研究所 函数调用和返回的处理方法、二进制翻译方法和系统
CN101706734A (zh) * 2009-11-10 2010-05-12 中国科学院计算技术研究所 二进制翻译中间接跳转指令的翻译方法及其系统
US20140379955A1 (en) * 2011-03-31 2014-12-25 Yaozu Dong Memory mirroring and redundancy generation for high availability
CN105260659A (zh) * 2015-09-10 2016-01-20 西安电子科技大学 一种基于qemu的内核级代码重用型攻击检测方法
CN114610388A (zh) * 2022-02-28 2022-06-10 龙芯中科技术股份有限公司 一种指令跳转方法、处理器及电子设备
CN114610387A (zh) * 2022-02-28 2022-06-10 龙芯中科技术股份有限公司 一种分支预测方法、处理器及电子设备
CN115827064A (zh) * 2022-11-30 2023-03-21 龙芯中科技术股份有限公司 一种指令控制方法、装置及电子设备
CN116126350A (zh) * 2023-04-17 2023-05-16 龙芯中科技术股份有限公司 一种二进制翻译方法、二进制翻译器及电子设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452395A (zh) * 2007-11-28 2009-06-10 无锡江南计算技术研究所 函数调用和返回的处理方法、二进制翻译方法和系统
CN101706734A (zh) * 2009-11-10 2010-05-12 中国科学院计算技术研究所 二进制翻译中间接跳转指令的翻译方法及其系统
US20140379955A1 (en) * 2011-03-31 2014-12-25 Yaozu Dong Memory mirroring and redundancy generation for high availability
CN105260659A (zh) * 2015-09-10 2016-01-20 西安电子科技大学 一种基于qemu的内核级代码重用型攻击检测方法
CN114610388A (zh) * 2022-02-28 2022-06-10 龙芯中科技术股份有限公司 一种指令跳转方法、处理器及电子设备
CN114610387A (zh) * 2022-02-28 2022-06-10 龙芯中科技术股份有限公司 一种分支预测方法、处理器及电子设备
CN115827064A (zh) * 2022-11-30 2023-03-21 龙芯中科技术股份有限公司 一种指令控制方法、装置及电子设备
CN116126350A (zh) * 2023-04-17 2023-05-16 龙芯中科技术股份有限公司 一种二进制翻译方法、二进制翻译器及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116956270A (zh) * 2023-09-18 2023-10-27 星汉智能科技股份有限公司 应用程序运行方法、运行环境re、电子设备、存储介质
CN116956270B (zh) * 2023-09-18 2024-01-12 星汉智能科技股份有限公司 应用程序运行方法、运行环境re、电子设备、存储介质

Also Published As

Publication number Publication date
CN116501387B (zh) 2023-09-12

Similar Documents

Publication Publication Date Title
CN104881494B (zh) 与Redis服务器进行数据同步的方法、装置和系统
CN116501387B (zh) 一种指令跳转方法、装置、电子设备及可读存储介质
US9811321B1 (en) Script compilation
KR920001321A (ko) 고속 프로세서에서의 브랜치 처리 방법 및 장치
US20090300267A1 (en) Systems and methods for facilitating profiling of applications for efficient loading
RU2602335C2 (ru) Способ и устройство для предсказания ветвлений
US20190087208A1 (en) Method and apparatus for loading elf file of linux system in windows system
EP3144814B1 (en) Method and apparatus for generating a profile of a target program
JP2015133126A (ja) プロシージャリターンシーケンスを加速するための方法およびシステム
CN115525344B (zh) 一种译码方法、处理器、芯片及电子设备
CN107436752B (zh) 异常现场恢复方法、装置及计算机可读存储介质
CN113254079A (zh) 一种用于实现自增指令的方法及系统
CN116737240A (zh) 分支预测方法、装置、处理器、介质及设备
CN115629806A (zh) 一种处理指令的方法、系统、设备和存储介质
US9639370B1 (en) Software instructed dynamic branch history pattern adjustment
US7234046B2 (en) Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping
US10802854B2 (en) Method and apparatus for interpreting bytecode instruction stream
US8490098B2 (en) Concomitance scheduling commensal threads in a multi-threading computer system
US20160011889A1 (en) Simulation method and storage medium
US6532532B1 (en) Instruction execution mechanism
CN114610388A (zh) 一种指令跳转方法、处理器及电子设备
US9250909B2 (en) Fast index tree for accelerated branch prediction
CN112947991A (zh) 版本差异代码文件的获取方法、装置、计算机设备和介质
JP2010140233A (ja) エミュレーションシステム及びエミュレーション方法
JP4701611B2 (ja) 動的変換方式のエミュレータ向けメモリ管理方法

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
GR01 Patent grant
GR01 Patent grant