模式跳转方法技术

技术编号:39497607 阅读:13 留言:0更新日期:2023-11-24 11:27
本申请实施例提供了一种模式跳转方法

【技术实现步骤摘要】
模式跳转方法、装置、电子设备及存储介质


[0001]本申请实施例涉及计算机
,特别是涉及一种模式跳转方法

装置

电子设备及存储介质


技术介绍

[0002]分层编译是通过编译策略对解释器和不同优化程度的即时编译器混合使用,以实现对解释型语言编写的程序的运行时优化

在此过程中,需要通过修改调用的目标地址,实现程序的执行模式在解释执行模式到即时编译模式的跳转,以及程序的执行模式在不同优化程度的即时编译模式之间的跳转

当需要通过修改多条指令实现对调用的目标地址修改时,修改过程中存在其他线程同时在执行调用目标地址的模式跳转操作,导致其他线程跳转到错误的地址


技术实现思路

[0003]鉴于上述问题,本申请实施例提出一种模式跳转方法

装置

电子设备及存储介质,以便解决通过修改多条指令实现对调用的目标地址修改时,修改过程中其他线程跳转到错误的目标地址的问题

[0004]第一方面,本申请实施例提供了一种模式跳转方法,该方法包括以下步骤:
[0005]在程序进行执行模式跳转时,获取第一目标地址,所述第一目标地址为待执行模式对应的指令序列所在的地址,所述程序为解释型语言编写的程序;
[0006]根据所述第一目标地址以及当前模式跳转操作对应的第一指令序列,生成用于跳转到所述待执行模式对应的指令序列的第二指令序列,所述第二指令序列包括最后生成的第一指令,所述第一指令存储于所述第一指令序列中第一条被执行的指令所在的位置,以使得第二指令序列全部生成完毕后,通过所述第一指令执行所述第二指令序列中的其他指令

[0007]可选的,所述根据所述第一目标地址以及当前模式跳转操作对应的第一指令序列,生成用于跳转到所述待执行模式对应的指令序列的第二指令序列,包括:
[0008]复制所述第一指令序列中的调用指令,并根据所述第一目标地址修改复制后的调用指令的跳转目标地址,得到所述其他指令;
[0009]生成所述第一指令,并将所述第一指令序列中第一条被执行的指令修改为所述第一指令;
[0010]根据所述第一指令与所述其他指令生成所述第二指令序列,所述第二指令序列与所述第一指令序列各自的存储地址通过所述第一指令完成跳转,所述第一指令为原子指令

[0011]可选的,所述第一指令序列包括多条调用指令;所述根据所述第一目标地址修改复制后的调用指令的跳转目标地址,得到所述其他指令,包括:
[0012]对于任一目标调用指令,根据所述第一目标地址获取所述目标调用指令对应的目
标子地址,所述目标调用指令是通过复制所述多条调用指令中的一条调用指令得到的;
[0013]根据所述目标子地址对所述目标调用指令中的跳转子地址进行修改,得到修改后的目标调用指令;
[0014]将各所述修改后的目标调用指令确定为所述其他指令

[0015]可选的,所述根据所述第一目标地址以及当前模式跳转操作对应的第一指令序列,生成用于跳转到所述待执行模式对应的指令序列的第二指令序列,包括:
[0016]复制所述第一指令序列中的调用指令,并根据所述第一目标地址修改复制后的调用指令中第二指令的跳转目标地址,以及将修改后的第二指令确定为所述其他指令,所述第二指令包括所述复制后的调用指令中除第一条被执行的指令以外的调用指令;
[0017]根据所述第一目标地址修改所述复制后的调用指令中第一条被执行的指令,得到所述第一指令;
[0018]根据所述第一指令和所述其他指令生成所述第二指令序列

[0019]可选的,所述第一指令序列包括多条调用指令;所述根据所述第一目标地址修改复制后的调用指令中第二指令的跳转目标地址,以及将修改后的第二指令确定为所述其他指令,包括:
[0020]对于任一目标调用指令,根据所述第一目标地址获取所述目标调用指令对应的目标子地址,所述目标调用指令是所述第二指令中的一条调用指令;
[0021]根据所述目标子地址对所述目标调用指令中的跳转子地址进行修改,得到修改后的目标调用指令;
[0022]将各所述修改后的目标调用指令确定为所述其他指令

[0023]可选的,所述待执行模式为即时编译模式,所述在程序进行执行模式跳转时,获取第一目标地址,包括:
[0024]在所述程序的执行模式从解释执行模式跳转到所述即时编译模式时,获取所述程序在所述即时编译模式下执行时对应的指令序列的存储地址,并将所述存储地址确定为所述第一目标地址

[0025]可选的,所述待执行模式为解释执行模式,所述在程序进行执行模式跳转时,获取第一目标地址,包括:
[0026]在所述程序的执行模式从即时编译模式跳转到所述解释执行模式时,获取所述程序在所述解释执行模式下执行时对应的指令序列的存储地址,并将所述存储地址确定为所述第一目标地址

[0027]第二方面,本申请实施例提供了一种模式跳转装置,该装置包括:
[0028]获取模块,用于在程序进行执行模式跳转时,获取第一目标地址,所述第一目标地址为待执行模式对应的指令序列所在的地址,所述程序为解释型语言编写的程序;
[0029]生成模块,用于根据所述第一目标地址以及当前模式跳转操作对应的第一指令序列,生成用于跳转到所述待执行模式对应的指令序列的第二指令序列,所述第二指令序列包括最后生成的第一指令,所述第一指令存储于所述第一指令序列中第一条被执行的指令所在的位置,以使得第二指令序列全部生成完毕后,通过所述第一指令执行所述第二指令序列中的其他指令

[0030]可选的,所述生成模块具体用于:
[0031]复制所述第一指令序列中的调用指令,并根据所述第一目标地址修改复制后的调用指令的跳转目标地址,得到所述其他指令;
[0032]生成所述第一指令,并将所述第一指令序列中第一条被执行的指令修改为所述第一指令;
[0033]根据所述第一指令与所述其他指令生成所述第二指令序列,所述第二指令序列与所述第一指令序列各自的存储地址通过所述第一指令完成跳转,所述第一指令为原子指令

[0034]可选的,所述第一指令序列包括多条调用指令;所述生成模块具体还用于:
[0035]对于任一目标调用指令,根据所述第一目标地址获取所述目标调用指令对应的目标子地址,所述目标调用指令是通过复制所述多条调用指令中的一条调用指令得到的;
[0036]根据所述目标子地址对所述目标调用指令中的跳转子地址进行修改,得到修改后的目标调用指令;
[0037]将各所述修改后的目标调用指令确定为所述其他指令

[0038]可选的,所述生成模块具体用于:
[0039]复制所述第一指令序列中的调用指令,并根据所述第一目标地本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种模式跳转方法,其特征在于,所述方法包括:在程序进行执行模式跳转时,获取第一目标地址,所述第一目标地址为待执行模式对应的指令序列所在的地址,所述程序为解释型语言编写的程序;根据所述第一目标地址以及当前模式跳转操作对应的第一指令序列,生成用于跳转到所述待执行模式对应的指令序列的第二指令序列,所述第二指令序列包括最后生成的第一指令,所述第一指令存储于所述第一指令序列中第一条被执行的指令所在的位置,以使得第二指令序列全部生成完毕后,通过所述第一指令执行所述第二指令序列中的其他指令
。2.
根据权利要求1所述的方法,其特征在于,所述根据所述第一目标地址以及当前模式跳转操作对应的第一指令序列,生成用于跳转到所述待执行模式对应的指令序列的第二指令序列,包括:复制所述第一指令序列中的调用指令,并根据所述第一目标地址修改复制后的调用指令的跳转目标地址,得到所述其他指令;生成所述第一指令,并将所述第一指令序列中第一条被执行的指令修改为所述第一指令;根据所述第一指令与所述其他指令生成所述第二指令序列,所述第二指令序列与所述第一指令序列各自的存储地址通过所述第一指令完成跳转,所述第一指令为原子指令
。3.
根据权利要求2所述的方法,其特征在于,所述第一指令序列包括多条调用指令;所述根据所述第一目标地址修改复制后的调用指令的跳转目标地址,得到所述其他指令,包括:对于任一目标调用指令,根据所述第一目标地址获取所述目标调用指令对应的目标子地址,所述目标调用指令是通过复制所述多条调用指令中的一条调用指令得到的;根据所述目标子地址对所述目标调用指令中的跳转子地址进行修改,得到修改后的目标调用指令;将各所述修改后的目标调用指令确定为所述其他指令
。4.
根据权利要求1所述的方法,其特征在于,所述根据所述第一目标地址以及当前模式跳转操作对应的第一指令序列,生成用于跳转到所述待执行模式对应的指令序列的第二指令序列,包括:复制所述第一指令序列中的调用指令,并根据所述第一目标地址修改复制后的调用指令中第二指令的跳转目标地址,以及将修改后的第二指令确定为所述其他指令,所述第二指令包括所述复制后的调用指令中除第一条被执行的指令以外的调用指令;根据所述第一目标地址修改所述复制后的调用指令中第一条被执行的指令,得到所述第一指令;根据所述第一指令和所述其他指令生成所述第二指令序列
。5.
根据权利要求4所述的方法,其特征在于...

【专利技术属性】
技术研发人员:王雪敖琪
申请(专利权)人:龙芯中科技术股份有限公司
类型:发明
国别省市:

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

1