64位虚拟机处理访存指令的方法及装置制造方法及图纸

技术编号:10307033 阅读:165 留言:0更新日期:2014-08-08 09:12
本发明专利技术实施例提供一种64位虚拟机处理访存指令的方法及装置,涉及计算机技术领域,解决了整个程序性能损失的问题。该方法包括,获取访存指令,根据访存指令,确定访存指令所指示访存的目标地址的低位地址,根据目标地址的低位地址,生成第一汇编指令和第二汇编指令,以使通过第一汇编指令和第二汇编指令低位地址加载到第一寄存器;根据访存指令,生成第三汇编指令,第三汇编指令用于访存第一寄存器中存储的低位地址与第二寄存器中存储的高位地址,并叠加得到的目标地址,高位地址为程序的全局高位地址。用于64位虚拟机中的即时编译。

【技术实现步骤摘要】
64位虚拟机处理访存指令的方法及装置
本专利技术实施例涉及计算机技术,尤其涉及一种64位虚拟机处理访存指令的方法及装置。
技术介绍
现有技术中,在64位Java虚拟机处理访存指令时,首先确定访存指令指示访存的目标地址,并对该目标地址进行分析,然后根据该目标地址的特点编译高效的指令序列,因此,针对不同的地址值生成的访存指令序列的长度不同,长度较高时甚至7条指令才能完成一次访存操作。上述这种方式在地址分析时相对比较耗时,对于即时编译,地址分析的过程会是一个频发的操作,会给编译进程带来性能影响,此外,对于Java虚拟机这种动态生成执行代码的程序,在生成访存代码时,并不一定能够确定目标地址的值,在生成代码后可能会对该地址进行修改,由于必须知道目标地址的值之后才能生成相应的代码,并且由于访存指令序列长度的不定,会增加地址重填过程的复杂度,给整个程序带来性能损失。
技术实现思路
本专利技术提供一种64位虚拟机处理访存指令的方法及装置,以通过固定较少的汇编指令实现访存的目的。第一个方面,本专利技术提供一种64位虚拟机处理访存指令的方法,包括:获取访存指令;根据所述访存指令,确定所述访存指令所指示访存的目标地址的低位地址;根据所述目标地址的低位地址,生成第一汇编指令和第二汇编指令,以使通过所述第一汇编指令和所述第二汇编指令将所述低位地址加载到第一寄存器;根据所述访存指令,生成第三汇编指令,所述第三汇编指令用于访存所述第一寄存器中存储的所述低位地址与第二寄存器中存储的高位地址,并叠加得到的目标地址,所述高位地址为程序的全局高位地址。第二个方面,本专利技术提供一种64位虚拟机处理访存指令的装置,包括:获取模块,用于获取访存指令;确定模块,用于根据所述获取模块获取的所述访存指令,确定所述访存指令所指示访存的目标地址的低位地址;第一生成模块,用于根据所述确定模块确定的所述目标地址的低位地址,生成第一汇编指令和第二汇编指令,以使通过所述第一汇编指令和所述第二汇编指令将所述低位地址加载到第一寄存器;第二生成模块,用于根据所述获取模块获取的所述访存指令,生成第三汇编指令,所述第三汇编指令用于访存所述第一寄存器中存储的所述低位地址与第二寄存器中存储的高位地址,并叠加得到的目标地址,所述高位地址为程序的全局高位地址。本专利技术提供的访存指令处理方法及装置,通过生成固定的三条汇编指令实现访存操作的执行,不需要对访存指令的地址进行分析也不会由于编译访存指令时的代码段出现指令膨胀的情况,解决了现有技术中地址分析时相对比较耗时,对于即时编译,地址分析的过程会是一个频发的操作,会给编译进程带来性能影响的问题,还解决了现有技术中由于访存指令序列长度的不定,会增加地址重填过程的复杂度,给整个程序带来性能损失的问题。【附图说明】为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术64位虚拟机处理访存指令的方法实施例一的流程示意图;图2为本专利技术64位虚拟机处理访存指令的方法实施例二的流程示意图;图3为本专利技术64位虚拟机处理访存指令的装置实施例一的结构示意图;图4为本专利技术64位虚拟机处理访存指令的装置实施例二的结构示意图。【具体实施方式】为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例提供的64位虚拟机处理访存指令的方法具体可以应用于64为虚拟机接收到访存指令并进行处理时,该64位虚拟机处理访存指令的方法具体可以通过64位虚拟机处理访存指令的装置或即时编译器来执行,该64位虚拟机处理访存指令的装置可以集成在虚拟机中,其中,该64位虚拟机处理访存指令的装置可以采用软件和/或硬件的方式来实现。以下对本实施例提供的64位虚拟机处理访存指令的方法及装置进行说明。图1为本专利技术64位虚拟机处理访存指令的方法实施例一的流程示意图。本实施例的执行的主体可以是即时编译器。如图1所示,本实施例提供的64位虚拟机处理访存指令的方法具体包括如下步骤:步骤101、获取访存指令。本实施例的适用场景为,64位虚拟机中即时编译器处理程序中的访存指令,其中,访存指令为即时编译器编译执行到中间代码时的访存指令。在本实施例中,访存指令包括访问内存的目标地址,例如,该访存指令为读指令,其中,该读指令用以读取目标地址存储的数据,或者,该访存指令为写指令,其中,写指令用以将写指令指示的数据写入目标地址。步骤102、根据访存指令,确定访存指令所指示访存的目标地址的低位地址。在本实施例中,将目标地址分为高位地址和低位地址,其中,该低位地址为目标地址的低位部分的地址,高位地址为目标地址除低位地址的地址,例如,64位虚拟机中,高位地址为前32位,即63-32,低位地址为32位,即31_0。值得说明的是,本专利技术实施例可以用于的64位JAVA虚拟机,64位JAVA虚拟机中的高位地址为全局统一的,即在同一个JAVA程序中,其访存的所有目标地址的高位地址均相同。本专利技术实施例还可以用于程序模块中高位地址为全局统一的64位虚拟机,即在同一个程序块中,其访存的所有目标地址的高位地址均相同。步骤103、根据目标地址的低位地址,生成第一汇编指令和第二汇编指令。具体的,64位虚拟机处理访存指令的装置根据目标地址的低位地址,编译出两条汇编指令。即根据目标地址的低位地址生成第一汇编指令,第一汇编指令用于将低位地址中的高位子地址加载到第一寄存器,例如,第一汇编指令用于将地址位15-0加载到第一寄存器;根据目标地址的低位地址生成第二汇编指令,第二汇编指令用于将低位地址中的低位子地址加载到第一寄存器,例如,第一汇编指令用于将地址位31-16加载到第一寄存器。需要说明的是,该第一寄存器可以是临时的寄存器。步骤104、根据访存指令,生成第三汇编指令。具体的,本实施例中的第三汇编指令用于访存第一寄存器中存储的低位地址,如地址位为31-0,与第二寄存器中存储的高位地址,如地址位为64-32,并叠加得到的64为的目标地址,其中,高位地址为程序的全局高位地址。在本实施例中,第三汇编指令可以是双基址访存指令也可以是其他可实现第三汇编指令功能的指令,此处以双基址访存指令为例进行详细的说明,该双基址访存指令包括操作码、第一寄存器标识、第二寄存器标识、目标寄存器标识以及偏移量,其中偏移量为零。举例来讲,访存指令为读指令,对应的,第三汇编指令为双基址读指令,其中,该双基址读指令用于将通过第一寄存器标识和第二寄存器标识获得的目标地址中存储的数据读取到目标寄存器标识所标示的寄存器。或者,访存指令为写指令;第三汇编指令为双基址写指令,其中,该双基址写指令用于将目标寄存器标识所标示的寄存器中存储的数据写入到通过第一寄存器标识和第二寄存器标识获得的目标地址中。通常情况下,64位虚拟机处理程序中不同的访存指本文档来自技高网...

【技术保护点】
一种64位虚拟机处理访存指令的方法,其特征在于,包括:获取访存指令;根据所述访存指令,确定所述访存指令所指示访存的目标地址的低位地址;根据所述目标地址的低位地址,生成第一汇编指令和第二汇编指令,以使通过所述第一汇编指令和所述第二汇编指令将所述低位地址加载到第一寄存器;根据所述访存指令,生成第三汇编指令,所述第三汇编指令用于访存所述第一寄存器中存储的所述低位地址与第二寄存器中存储的高位地址,并叠加得到的目标地址,所述高位地址为程序的全局高位地址。

【技术特征摘要】
1.一种64位虚拟机处理访存指令的方法,其特征在于,包括: 获取访存指令; 根据所述访存指令,确定所述访存指令所指示访存的目标地址的低位地址; 根据所述目标地址的低位地址,生成第一汇编指令和第二汇编指令,以使通过所述第一汇编指令和所述第二汇编指令将所述低位地址加载到第一寄存器; 根据所述访存指令,生成第三汇编指令,所述第三汇编指令用于访存所述第一寄存器中存储的所述低位地址与第二寄存器中存储的高位地址,并叠加得到的目标地址,所述高位地址为程序的全局高位地址。2.根据权利要求1所述的方法,其特征在于,所述根据所述目标地址的低位地址,生成第一汇编指令和第二汇编指令,包括: 根据所述目标地址的低位地址生成第一汇编指令,所述第一汇编指令用于将所述低位地址中的高位子地址加载到所述第一寄存器; 根据所述目标地址 的低位地址生成第二汇编指令,所述第二汇编指令用于将所述低位地址中的低位子地址加载到所述第一寄存器。3.根据权利要求1或2所述的方法,其特征在于,所述获取访存指令之前,还包括: 在开始编译所述程序时,将所述程序对应的所述全局高位地址存储在所述第二寄存器。4.根据权利要求3所述的方法,其特征在于,所述根据所述访存指令,生成第三汇编指令之前,还包括: 判断所述第二寄存器中保存的数值是否为所述程序对应的所述全局高位地址; 所述根据所述访存指令,生成第三汇编指令,包括: 若确定所述第二寄存器中保存的数值不是所述程序对应的所述全局高位地址时,则将所述程序对应的全局高位地址加载到所述第二寄存器,根据所述访存指令生成第三汇编指令; 若确定所述第二寄存器中保存的数值是所述程序对应的所述全局高位地址时,则直接根据所述访存指令生成第三汇编指令。5.根据权利要求1-4任一项所述的方法,其特征在于,所述第三汇编指令为双基址访存指令,所述双基址访存指令包括操作码、第一寄存器标识、第二寄存器标识、目标寄存器标识以及偏移量,其中所述偏移量为零。6.根据权利要求5所述的方法,其特征在于,所述访存指令为读指令; 所述第三汇编指令为双基址读指令,所述双基址读指令用于将通过所述第一寄存器标识和所述第二寄存器标识获得的所述目标地址中存储的数据读取到所述目标寄存器标识所...

【专利技术属性】
技术研发人员:敖琪靳国杰高翔
申请(专利权)人:龙芯中科技术有限公司
类型:发明
国别省市:北京;11

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

1