一种基于嵌入式虚拟机的动态编译的方法及装置制造方法及图纸

技术编号:15109478 阅读:59 留言:0更新日期:2017-04-09 00:44
本发明专利技术实施例公开了一种基于嵌入式虚拟机的动态编译的方法及装置,其中,该方法包括:获取字节码中的代码块;根据所述代码块的运行信息确定所述代码块是否符合预设热点的阈值条件;若所述代码块符合预设热点的阈值条件,则将所述代码块编译为本地代码,并将所述本地代码存储在预设寄存器中。本发明专利技术实施例公开一种基于嵌入式虚拟机的动态编译的方法及装置,提取字节码中的常用编译的代码块,并将该常用编译的代码块编译并存放在访问快速的寄存器中,减少常用编译的代码块的反复执行的次数,省去了大量的调用和重新解释的过程,并且存放在寄存器中更可以提高执行速度,节省时间。

【技术实现步骤摘要】

本专利技术实施例涉及嵌入式虚拟机的
,尤其涉及一种基于嵌入式虚拟机的动态编译的方法及装置
技术介绍
由于嵌入式平台本身在硬件资源方面存在的诸多限制,并且嵌入式虚拟机所要执行的应用中存在大量的循环,例如中断调用和安全策略等反复调用,会对虚拟机的效率造成一定的影响。当嵌入式虚拟机在执行大量数据传输时,势必会对数据的传输造成影响,从而影响到整个系统。如果要充分利用嵌入式虚拟机的各种功能,比如安全监测、代码识别、数据隔离等,系统性能的优化是有待提高的。
技术实现思路
本专利技术实施例提出一种基于嵌入式虚拟机的动态编译的方法及装置,旨在解决如何提高嵌入式虚拟机运行性能的问题。第一方面,一种基于嵌入式虚拟机的动态编译的方法,所述方法包括:获取字节码中的代码块;若所述代码块是已知热点,则从预设寄存器中获取本地代码进行编译;若所述代码块不是已知热点,则获取所述代码块的运行信息;根据所述代码块的运行信息确定所述代码块是否符合预设热点的阈值条件,所述运行信息包括所述代码块的历史编译次数;若所述代码块符合预设热点的阈值条件,则将所述代码块编译为本地代码,并将所述本地代码存储在预设寄存器中,返回执行获取字节码中的代码块的操作。优选地,所述将所述代码块编译为本地代码,并将所述本地代码存储在预设寄存器中,包括:分析器读入所述热点的代码块,用语法分析的方法将所述代码块转化为代码生成器能使用的内部语义信息;所述代码生成器根据所述内部语义信息生成本地代码,并将所述本地代码发送给代码部署器;所述代码部署器将所述本地代码存储在所述预设寄存器中。优选地,所述代码部署器将所述本地代码存储在所述预设寄存器中,包括:所述代码部署器在所述预设寄存器中为所述本地代码分配一个预设最小单位的存储空间;若所述本地代码的容量增大,则所述代码部署器继续为所述本地代码分配至少一倍的所述最小单位的存储空间,并将新分配的最小单位的存储空间的末尾地址和与上一个分配的最小单位的存储空间的开始地址通过指针链接。优选地,所述将所述本地代码存储在预设寄存器中之后,还包括:获取所述本地代码存储在所述预设寄存器中的地址信息,并将所述地址信息替代所述字节码中与对应代码块相同的所有代码块的原地址。优选地,所述从预设寄存器中获取本地代码进行编译,包括:读取所述字节码中的热点的地址信息,所述热点的地址信息为所述热点对应的本地代码在所述预设寄存器的地址信息;根据所述热点的地址信息获取所述热点对应的本地代码,并根据所述本地代码进行编译。优选地,所述方法还包括:每间隔预设时间获取所述本地代码的运行信息,根据所述本地代码的运行信息确定所述本地代码是否符合预设热点的阈值条件,所述本地代码的运行信息包括所述本地代码的运行次数;若所述本地代码不符合预设热点的阈值条件,则在所述预设寄存器中删除所述本地代码。第二方面,一种基于嵌入式虚拟机的动态编译的装置,所述装置包括:第一获取模块,用于获取字节码中的代码块;编译模块,用于若所述代码块是已知热点,则从预设寄存器中获取本地代码进行编译;第二获取模块,用于若所述代码块不是已知热点,则获取所述代码块的运行信息;第一确定模块,用于根据所述代码块的运行信息确定所述代码块是否符合预设热点的阈值条件,所述运行信息包括所述代码块的历史编译次数;返回模块,用于若所述代码块符合预设热点的阈值条件,则将所述代码块编译为本地代码,并将所述本地代码存储在预设寄存器中,返回执行第一获取模块的功能。第二方面,所述返回模块,包括:分析器,用于读入所述热点的代码块,用语法分析的方法将所述代码块转化为代码生成器能使用的内部语义信息;代码生成器,用于根据所述内部语义信息生成本地代码,并将所述本地代码发送给代码部署器;代码部署器,用于将所述本地代码存储在所述预设寄存器中。优选地,所述代码部署器,用于:在所述预设寄存器中为所述本地代码分配一个预设最小单位的存储空间;若所述本地代码的容量增大,则继续为所述本地代码分配至少一倍的所述最小单位的存储空间,并将新分配的最小单位的存储空间的末尾地址和与上一个分配的最小单位的存储空间的开始地址通过指针链接。优选地,所述装置还包括:替代模块,用于获取所述本地代码存储在所述预设寄存器中的地址信息,并将所述地址信息替代所述字节码中与对应代码块相同的所有代码块的原地址。优选地,所述编译模块,包括:读取单元,用于读取所述字节码中的热点的地址信息,所述热点的地址信息为所述热点对应的本地代码在所述预设寄存器的地址信息;编译单元,用于根据所述热点的地址信息获取所述热点对应的本地代码,并根据所述本地代码进行编译。优选地,所述装置还包括:第二确定模块,用于每间隔预设时间获取所述本地代码的运行信息,根据所述本地代码的运行信息确定所述本地代码是否符合预设热点的阈值条件,所述本地代码的运行信息包括所述本地代码的运行次数;删除模块,用于若所述本地代码不符合预设热点的阈值条件,则在所述预设寄存器中删除所述本地代码。本专利技术实施例提供一种基于嵌入式虚拟机的动态编译的方法及装置,提取字节码中的常用编译的代码块,并将该常用编译的代码块编译并存放在访问快速的寄存器中,减少常用编译的代码块的反复执行的次数,省去了大量的调用和重新解释的过程,并且存放在寄存器中更可以提高执行速度,节省时间。附图说明图1是本专利技术实施例一提供的一种基于嵌入式虚拟机的动态编译的方法的流程示意图;图2是本专利技术实施例提供的一种编译代码块的结构示意图;图3是本专利技术实施例提供的一种存储本地代码的结构示意图;图4是本专利技术实施例二提供的一种基于嵌入式虚拟机的动态编译的方法的流程示意图;图5是本专利技术实施例提供的一种编译模块的结构示意图;图6是本专利技术实施例提供的一种操作数栈与寄存器间的映射关系图;图7是本专利技术实施例三提供的一种基于嵌入式虚拟机的动态编译的装置的结构示意图;图8是本专利技术实施例四提供的一种嵌入式虚拟机的系统结构示意图。具体实施方式下面结合附图并通过具体实施方式来进一步说明本专利技术的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。在更加详细地讨论示例性本文档来自技高网...

【技术保护点】
一种基于嵌入式虚拟机的动态编译的方法,其特征在于,所述方法包括:获取字节码中的代码块;若所述代码块是已知热点,则从预设寄存器中获取本地代码进行编译;若所述代码块不是已知热点,则获取所述代码块的运行信息;根据所述代码块的运行信息确定所述代码块是否符合预设热点的阈值条件,所述运行信息包括所述代码块的历史编译次数;若所述代码块符合预设热点的阈值条件,则将所述代码块编译为本地代码,并将所述本地代码存储在预设寄存器中,返回执行获取字节码中的代码块的操作。

【技术特征摘要】
1.一种基于嵌入式虚拟机的动态编译的方法,其特征在于,所述方法包括:
获取字节码中的代码块;
若所述代码块是已知热点,则从预设寄存器中获取本地代码进行编译;
若所述代码块不是已知热点,则获取所述代码块的运行信息;
根据所述代码块的运行信息确定所述代码块是否符合预设热点的阈值条
件,所述运行信息包括所述代码块的历史编译次数;
若所述代码块符合预设热点的阈值条件,则将所述代码块编译为本地代码,
并将所述本地代码存储在预设寄存器中,返回执行获取字节码中的代码块的操
作。
2.根据权利要求1所述的方法,其特征在于,所述将所述代码块编译为本
地代码,并将所述本地代码存储在预设寄存器中,包括:
分析器读入所述热点的代码块,用语法分析的方法将所述代码块转化为代
码生成器能使用的内部语义信息;
所述代码生成器根据所述内部语义信息生成本地代码,并将所述本地代码
发送给代码部署器;
所述代码部署器将所述本地代码存储在所述预设寄存器中。
3.根据权利要求2所述的方法,其特征在于,所述代码部署器将所述本地
代码存储在所述预设寄存器中,包括:
所述代码部署器在所述预设寄存器中为所述本地代码分配一个预设最小单
位的存储空间;
若所述本地代码的容量增大,则所述代码部署器继续为所述本地代码分配
至少一倍的所述最小单位的存储空间,并将新分配的最小单位的存储空间的末
尾地址和与上一个分配的最小单位的存储空间的开始地址通过指针链接。
4.根据权利要求1至3任意一项所述的方法,其特征在于,所述将所述本
地代码存储在预设寄存器中之后,还包括:
获取所述本地代码存储在所述预设寄存器中的地址信息,并将所述地址信
息替代所述字节码中与对应代码块相同的所有代码块的原地址。
5.根据权利要求4所述的方法,其特征在于,所述从预设寄存器中获取本
地代码进行编译,包括:
读取所述字节码中的热点的地址信息,所述热点的地址信息为所述热点对
应的本地代码在所述预设寄存器的地址信息;
根据所述热点的地址信息获取所述热点对应的本地代码,并根据所述本地
代码进行编译。
6.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包
括:
每间隔预设时间获取所述本地代码的运行信息,根据所述本地代码的运行
信息确定所述本地代码是否符合预设热点的阈值条件,所述本地代码的运行信
息包括所述本地代码的运行次数;
若所述本地代码不符合预设热点的阈值条件,则在所述预设寄存器中删除
所述本地代码。

【专利技术属性】
技术研发人员:陈小波
申请(专利权)人:北京锐安科技有限公司
类型:发明
国别省市:北京;11

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

1