CN104063329A - 64位立即数处理方法及装置 - Google Patents
64位立即数处理方法及装置 Download PDFInfo
- Publication number
- CN104063329A CN104063329A CN201410308052.5A CN201410308052A CN104063329A CN 104063329 A CN104063329 A CN 104063329A CN 201410308052 A CN201410308052 A CN 201410308052A CN 104063329 A CN104063329 A CN 104063329A
- Authority
- CN
- China
- Prior art keywords
- immediate
- storage area
- instruction
- loading
- register
- 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
- 238000003672 processing method Methods 0.000 title abstract description 10
- 238000000034 method Methods 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 16
- 238000010586 diagram Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例提供一种64位立即数处理方法及装置。该方法包括,获取编译执行源代码过程中生成的立即数,其中,该立即数为操作码后面的操作数,接着,将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、指令序列和第一存储区,然后,根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。从而通过一条读取指令可以获取立即数,减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种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指令集中,立即数加载操作使用ld rd,(GP)offset_of_imm64的形式。其中rd是要加载的目标寄存器,imm64是保存在第一存储区中的某一项立即数,offset_of_imm64为imm64相对于第一存储区首地址的偏移量。
在本实施例中,获取编译执行源代码过程中生成的立即数,其中,该立即数为操作码后面的操作数,接着,将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、指令序列和第一存储区,然后,根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。从而通过一条读取指令可以获取立即数,减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。在64位虚拟机中,立即数加载操作出现频度很高,因此本发明实施例能够显著提升虚拟机性能。经实际验证,64位虚拟机的性能提升为与32位虚拟机持平。
在上述实施例的基础上,立即数加载指令包括第一寄存器的标识、待加载立即数设置的位置与第一存储区首地址之间的偏移量以及用于加载立即数的目标寄存器的标识;
在步骤103之后,还可以包括:
根据立即数加载指令,从第一存储区中读取待加载的立即数;
将待加载的立即数加载到目标寄存器中。
举例来讲,在MIPS指令集中,立即数加载操作使用ld rd,(GP)offset_of_imm64的形式。其中rd是要加载的目标寄存器,imm64是保存在第一存储区中的某一项立即数,offset_of_imm64为imm64相对于第一存储区首地址的偏移量。
在本实施例中,通过一条读取指令可以获取立即数,从而减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。
图2为本发明64位立即数处理装置实施例一的结构示意图。如图2所示,该立即数加载装置,包括:获取模块21、设置模块22和生成模块23,其中,
获取模块21,用于获取编译执行源代码过程中生成的立即数,立即数为操作码后面的操作数;
设置模块22,用于将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、指令序列和第一存储区;
生成模块23,用于根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。
在本实施例中,获取编译执行源代码过程中生成的立即数,其中,该立即数为操作码后面的操作数,接着,将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、指令序列和第一存储区,然后,根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。从而通过一条读取指令可以获取立即数,减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。在64位虚拟机中,立即数加载操作出现频度很高,因此本发明实施例能够显著提升虚拟机性能。经实际验证,64位虚拟机的性能提升为与32位虚拟机持平。
图3为本发明立即数加载装置实施例二的结构示意图。如图3所示,在上述实施例的基础上,该装置还可以包括:确定模块24,其中,该确定模块24,用于确定第一寄存器,第一寄存器内设置有指向第一存储区的指针。
需要说明的是,第一读指令包括第一存储区域首地址和第一偏移量,第一偏移量为立即数设置在第一存储区域相对于第一存储区域首地址的偏移量。
进一步的,在上述实施例的基础上,该装置,还包括:读取模块25和加载模块26。其中,
读取模块25,用于根据立即数加载指令,从第一存储区中读取待加载的立即数,立即数加载指令包括第一寄存器的标识、待加载立即数设置的位置与第一存储区首地址之间的偏移量以及用于加载立即数的目标寄存器的标识;
加载模块26,用于将待加载的立即数加载到目标寄存器中。
在本实施例中,从而通过一条读取指令可以获取立即数,减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。
在本实施例中,获取编译执行源代码过程中生成的立即数,其中,该立即数为操作码后面的操作数,接着,将立即数设置在结构体的第一存储区中,结构体包括源代码的入口、指令序列和第一存储区,然后,根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。从而通过一条读取指令可以获取立即数,减少了立即数加载的指令数,进而减少了虚拟机运行该数据指令的时间。在64位虚拟机中,立即数加载操作出现频度很高,因此本发明实施例能够显著提升虚拟机性能。经实际验证,64位虚拟机的性能提升为与32位虚拟机持平。
本领域普通技术人员可以理解:实现所述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括所述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (6)
1.一种64位立即数处理方法,其特征在于,包括:
获取编译执行源代码过程中生成的立即数,所述立即数为操作码后面的操作数;
将所述立即数设置在结构体的第一存储区中,所述结构体包括所述源代码的入口、指令序列和所述第一存储区;
根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。
2.根据权利要求1所述的方法,其特征在于,所述获取编译执行源代码过程中生成的立即数之前,还包括:
确定第一寄存器,所述第一寄存器内设置有指向所述第一存储区首地址的指针。
3.根据权利要求2所述的方法,其特征在于,所述立即数加载指令包括所述第一寄存器的标识、待加载立即数设置的位置与所述第一存储区首地址之间的偏移量以及用于加载所述立即数的目标寄存器的标识;
所述根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量生成立即数加载指令之后,还包括:
根据所述立即数加载指令,从所述第一存储区中读取所述待加载的立即数;
将所述待加载的立即数加载到所述目标寄存器中。
4.一种64位立即数处理装置,其特征在于,包括:
获取模块,用于获取编译执行源代码过程中生成的立即数,所述立即数为操作码后面的操作数;
设置模块,用于将所述立即数设置在结构体的第一存储区中,所述结构体包括所述源代码的入口、指令序列和所述第一存储区;
生成模块,用于根据所述第一存储区首地址以及设置所述立即数的位置与所述第一存储区首地址之间的偏移量,生成立即数加载指令。
5.根据权利要求4所述的装置,其特征在于,还包括:确定模块;
所述确定模块,用于确定第一寄存器,所述第一寄存器内设置有指向所述第一存储区首地址的指针。
6.根据权利要求5所述的装置,其特征在于,还包括:读取模块和加载模块;
所述读取模块,用于根据所述立即数加载指令,从所述第一存储区中读取所述待加载的立即数,所述立即数加载指令包括所述第一寄存器的标识、待加载立即数设置的位置与所述第一存储区首地址之间的偏移量以及用于加载所述立即数的目标寄存器的标识;
所述加载模块,用于将所述待加载的立即数加载到所述目标寄存器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410308052.5A CN104063329B (zh) | 2014-06-30 | 2014-06-30 | 64位立即数处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410308052.5A CN104063329B (zh) | 2014-06-30 | 2014-06-30 | 64位立即数处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104063329A true CN104063329A (zh) | 2014-09-24 |
CN104063329B CN104063329B (zh) | 2017-04-12 |
Family
ID=51551050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410308052.5A Active CN104063329B (zh) | 2014-06-30 | 2014-06-30 | 64位立即数处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104063329B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325973A (zh) * | 2015-06-29 | 2017-01-11 | 龙芯中科技术有限公司 | 虚拟机指令的解释执行方法和装置 |
GB2551626A (en) * | 2016-04-25 | 2017-12-27 | Bae Systems Plc | Data processing |
CN110096283A (zh) * | 2018-10-12 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
US11306998B2 (en) | 2016-04-25 | 2022-04-19 | Bae Systems Plc | Data processing |
WO2024169618A1 (zh) * | 2023-02-14 | 2024-08-22 | 华为技术有限公司 | 一种代码编译方法及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110153986A1 (en) * | 2009-12-22 | 2011-06-23 | International Business Machines Corporation | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors |
CN102754069A (zh) * | 2010-02-18 | 2012-10-24 | 国际商业机器公司 | 加载/存储分离设施及其指令 |
CN103049305A (zh) * | 2012-08-03 | 2013-04-17 | 北京航空航天大学 | 针对龙芯多核cpu模拟的动态代码转换的多线程化方法 |
-
2014
- 2014-06-30 CN CN201410308052.5A patent/CN104063329B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110153986A1 (en) * | 2009-12-22 | 2011-06-23 | International Business Machines Corporation | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors |
CN102754069A (zh) * | 2010-02-18 | 2012-10-24 | 国际商业机器公司 | 加载/存储分离设施及其指令 |
CN103049305A (zh) * | 2012-08-03 | 2013-04-17 | 北京航空航天大学 | 针对龙芯多核cpu模拟的动态代码转换的多线程化方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325973A (zh) * | 2015-06-29 | 2017-01-11 | 龙芯中科技术有限公司 | 虚拟机指令的解释执行方法和装置 |
CN106325973B (zh) * | 2015-06-29 | 2019-10-25 | 龙芯中科技术有限公司 | 虚拟机指令的解释执行方法和装置 |
GB2551626A (en) * | 2016-04-25 | 2017-12-27 | Bae Systems Plc | Data processing |
US11306998B2 (en) | 2016-04-25 | 2022-04-19 | Bae Systems Plc | Data processing |
CN110096283A (zh) * | 2018-10-12 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
WO2024169618A1 (zh) * | 2023-02-14 | 2024-08-22 | 华为技术有限公司 | 一种代码编译方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104063329B (zh) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104063329B (zh) | 64位立即数处理方法及装置 | |
KR101381274B1 (ko) | 효율적인 동적 이진 변환을 위한 레지스터 매핑 방법, 시스템 및 컴퓨터 판독가능 저장 매체 | |
US10860300B2 (en) | Direct function call substitution using preprocessor | |
US9164754B1 (en) | Runtime patching of native-code programs | |
US9558096B2 (en) | Method and apparatus for supporting performance analysis | |
US20100180263A1 (en) | Apparatus and method for detecting software error | |
EP3049921A1 (en) | Methods and apparatus to validate translated guest code in a dynamic binary translator | |
CN104346132A (zh) | 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机 | |
US20140250289A1 (en) | Branch Target Buffer With Efficient Return Prediction Capability | |
EP2972789B1 (en) | Method to improve speed of executing return branch instructions in a processor | |
US10338926B2 (en) | Processor with conditional instructions | |
US20130152049A1 (en) | Warning of register and storage area assignment errors | |
CN104239055A (zh) | 检测软件代码复杂度的方法 | |
KR20160098794A (ko) | 디바이스 프로그램 구조 모델링 기반 골격코드 생성 장치 및 방법 | |
US9081560B2 (en) | Code tracing processor selection | |
CN108228239B (zh) | 基于快速模拟器qemu的分支指令抓取方法和装置 | |
CN107045606B (zh) | 用于监测程序代码的执行的方法和设备 | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
CN111796867A (zh) | 着色器的转换方法、装置及电子设备 | |
JPWO2020194455A1 (ja) | テストケース生成装置、テストケース生成方法、およびテストケース生成プログラム | |
US20170115973A1 (en) | Operating method of semiconductor device and semiconductor system | |
JP2015146178A (ja) | テストコンテキストの生成 | |
US9606779B2 (en) | Data processing system and data simulation method in the system | |
US20110167417A1 (en) | Programming system in multi-core, and method and program of the same | |
CN109408063B (zh) | 基于虚拟机的指令插桩方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
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 |