64位立即数处理方法及装置制造方法及图纸

技术编号:10478872 阅读:132 留言:0更新日期:2014-09-25 16:53
本发明专利技术实施例提供一种64位立即数处理方法及装置。该方法包括,获取编译执行源代码过程中生成的立即数,其中,该立即数为操作码后面的操作数,接着,将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、指令序列和第一存储区,然后,根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。从而通过一条读取指令可以获取立即数,减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。

【技术实现步骤摘要】
64位立即数处理方法及装置
本专利技术实施例涉及计算机技术,尤其涉及一种64位立即数处理方法及装置。
技术介绍
虚拟机可以为上层的操作系统或应用程序提供不同于底层机器的虚拟执行环境。现有技术中,虚拟机的执行方式包括解释执行和翻译执行。其中,解释执行由解释器以单一目标指令为单位进行取指令、分析指令和执行指令的操作,翻译执行是以一组连续目标指令(基本块或者函数)为单位由编译器整体编译成本地CPU指令集执行。在上述的执行过程中均有立即数处理,即紧跟在操作码的后面与操作码一起放在指令代码段中的指令的处理。然而,在现有技术中,将64位立即数加载到寄存器的翻译过程中,由于存储地址范围的扩大,导致产生大量的立即数,并需要运行大量承载该些立即数的指令,从而导致虚拟机需要消耗大量的运行时间。
技术实现思路
本专利技术提供一种64位立即数处理方法及装置,以减少虚拟机的运行时间。第一个方面,本专利技术提供一种64位立即数处理方法,包括:获取处理数据指令过程中生成的立即数,所述立即数为处理所述数据指令过程中生成的操作数;将所述立即数设置在结构体的第一存储区中,所述结构体包括所述源代码的入口、指令序列和所述第一存储区;根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。第二方面,本专利技术提供一种64位立即数处理装置,包括:获取模块,用于获取编译执行源代码过程中生成的立即数,所述立即数为操作码后面的操作数;设置模块,用于将所述立即数设置在结构体的第一存储区中,所述结构体包括所述源代码的入口、指令序列和所述第一存储区;生成模块,用于根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。本专利技术提供的64位立即数处理方法及装置,通过获取编译执行源代码过程中生成的立即数,其中,该立即数为操作码后面的操作数,接着,将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、指令序列和第一存储区,然后,根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。从而通过一条读取指令可以获取立即数,减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。在64位虚拟机中,立即数加载操作出现频度很高,因此本专利技术实施例能够显著提升虚拟机性能。经实际验证,64位虚拟机的性能提升为与32位虚拟机持平。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术64位立即数处理方法实施例一的流程示意图;图2为本专利技术64位立即数处理装置实施例一的结构示意图;图3为本专利技术64位立即数处理装置实施例二的结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图1为本专利技术64位立即数处理方法实施例一的流程示意图。本实施例的执行主体可以是64位立即数处理装置,该64位立即数处理装置可以集成在虚拟机中,该64位立即数处理装置可以采用软件和/或硬件的方式来实现。如图1所示,本实施例提供的64位立即数处理方法具体包括如下步骤:步骤101、获取编译执行源代码过程中生成的立即数。在本实施例中,该立即数为操作码后面的操作数,例如,该立即数为从跳转指令中获得的跳转目标地址、堆中对象在内存中存储的地址、以及永久代常数的指令。需要说明的是,确定立即数场景至少包括以下两种,具体为:第一场景,在虚拟机中编译器生成中间代码的过程中确定的;第二场景,在等到指令发射阶段匹配具体的翻译规则时确定的,其中,该指令发射阶段为编译执行的高级中间代码阶段到MIPS汇编语言阶段处时,该高级中间代码阶段为在编译执行过程中,中间代码阶段中的一个阶段。步骤102、将立即数设置在结构体的第一存储区中。需要说明的是,该结构体包括源代码的入口、指令序列和第一存储区。具体的,在处理数据指令之初,在数据指令的入口处进行初始化处理时,确定设置立即数的第一存储区域。举例来讲,确定第一寄存器,该第一寄存器内设置有指向第一存储区的指针,其中,该第一寄存器为设置在虚拟机所在系统中的任一空闲的寄存器,即在虚拟机运行过程中没有被占用的寄存器。步骤103、根据第一存储区首地址以及设置立即数的位置与第一存储区首地址之间的偏移量,生成立即数加载指令。举例来讲,在MIPS指令集中,立即数加载操作使用ldrd,(GP)offset_of_imm64的形式。其中rd是要加载的目标寄存器,imm64是保存在第一存储区中的某一项立即数,offset_of_imm64为imm64相对于第一存储区首地址的偏移量。在本实施例中,获取编译执行源代码过程中生成的立即数,其中,该立即数为操作码后面的操作数,接着,将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、指令序列和第一存储区,然后,根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。从而通过一条读取指令可以获取立即数,减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。在64位虚拟机中,立即数加载操作出现频度很高,因此本专利技术实施例能够显著提升虚拟机性能。经实际验证,64位虚拟机的性能提升为与32位虚拟机持平。在上述实施例的基础上,立即数加载指令包括第一寄存器的标识、待加载立即数设置的位置与第一存储区首地址之间的偏移量以及用于加载立即数的目标寄存器的标识;在步骤103之后,还可以包括:根据立即数加载指令,从第一存储区中读取待加载的立即数;将待加载的立即数加载到目标寄存器中。举例来讲,在MIPS指令集中,立即数加载操作使用ldrd,(GP)offset_of_imm64的形式。其中rd是要加载的目标寄存器,imm64是保存在第一存储区中的某一项立即数,offset_of_imm64为imm64相对于第一存储区首地址的偏移量。在本实施例中,通过一条读取指令可以获取立即数,从而减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。图2为本专利技术64位立即数处理装置实施例一的结构示意图。如图2所示,该立即数加载装置,包括:获取模块21、设置模块22和生成模块23,其中,获取模块21,用于获取编译执行源代码过程中生成的立即数,立即数为操作码后面的操作数;设置模块22,用于将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、指令序列和第一存储区;生成模块23,用于根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。在本实施例中,获取编译执行源代码过程中生成的立即数,其中,该立即数为操作码后面的操作数,接着,将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、本文档来自技高网...
64位立即数处理方法及装置

【技术保护点】
一种64位立即数处理方法,其特征在于,包括:获取编译执行源代码过程中生成的立即数,所述立即数为操作码后面的操作数;将所述立即数设置在结构体的第一存储区中,所述结构体包括所述源代码的入口、指令序列和所述第一存储区;根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。

【技术特征摘要】
1.一种64位立即数处理方法,其特征在于,包括:获取编译执行源代码过程中生成的立即数,所述立即数为操作码后面的操作数;将所述立即数设置在结构体的第一存储区中,所述结构体包括所述源代码的入口、指令序列和所述第一存储区;根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。2.根据权利要求1所述的方法,其特征在于,所述获取编译执行源代码过程中生成的立即数之前,还包括:确定第一寄存器,所述第一寄存器内设置有指向所述第一存储区首地址的指针。3.根据权利要求2所述的方法,其特征在于,所述立即数加载指令包括所述第一寄存器的标识、待加载立即数设置的位置与所述第一存储区首地址之间的偏移量以及用于加载所述立即数的目标寄存器的标识;所述根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量生成立即数加载指令之后,还包括:根据所述立即数加载指令,从所述第一存储区中读取所述待加载的立即数;将所述待加载的立即数加载到所述...

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

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

1