[发明专利]基于执行树深度的二进制翻译方法和装置在审
申请号: | 201410688378.5 | 申请日: | 2014-11-26 |
公开(公告)号: | CN104375879A | 公开(公告)日: | 2015-02-25 |
发明(设计)人: | 康烁 | 申请(专利权)人: | 康烁 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/32 |
代理公司: | 北京恒都律师事务所 11395 | 代理人: | 李向东 |
地址: | 100084 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 执行 深度 二进制 翻译 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,具体而言,特别涉及基于执行树深度的二进制翻译方法和装置。
背景技术
二进制翻译是指把一种源处理器的二进制程序翻译为另外一种目标处理器上的机器语言的方法,以使被翻译的程序能够在目标处理器上可以执行。在二进制翻译方法中,把多个基本块构建为一个超级块,其中,基本块是指只有单入口和单出口的一段指令,超级块是指多个基本块的集合。
现有方法是把具有先后执行顺序的、已经在源处理器上执行过的多个基本块组成一个超级块,然后对这个超级块进行翻译。因此,现有的翻译方法没有把在源处理器上未执行的基本块翻译在超级块中,在目标处理器中执行程序时,执行效率低。
针对现有技术中存在的目标处理器执行二级制翻译后的超级块的性能低的问题,目前尚未提出有效的解决方法。
发明内容
本发明的主要目的在于提供一种基于执行树深度的二进制翻译方法和装置,以解决现有技术中的目标处理器执行二级制翻译后的超级块的性能低问题。
依据本发明的一个方面,提供了一种基于执行树深度的二进制翻译方法。
根据本发明的二进制翻译方法包括:步骤S0:开始构造超级块,将执行树深度初始化为0,并获取预设的执行树深度阈值,从预设的起始地址所在的基本块开始翻译;步骤S1:翻译获取到的基本块;步骤S2:若翻译的基本块的当前指令为直接跳转指令,则获取直接跳转指令进入的基本块,并返回至步骤S1;步骤S3:若翻译的基本块的当前指令为条件跳转指令,则获取条件跳转指令跳转后的基本块和条件跳转指令的下一个基本块,并且将执行树深度加1,返回至步骤S1; 步骤S4:若翻译的基本块的当前指令为函数调用指令,则获取函数调用指令对应的函数作为基本块,并且将执行树深度加1,返回至步骤S1,其中,在每次执行树深度加1之后,判断当前的执行树深度是否达到执行树深度阈值,若执行树深度达到执行树深度阈值,则翻译结束,翻译的所有基本块构成一个超级块。
进一步地,该方法还包括:步骤S5:在执行步骤S1之后,存储基本块的第一条指令的地址。
进一步地,该方法还包括:步骤S6:在获取预设的执行树深度阈值的同时,获取预设的翻译时间阈值,并且在开始翻译时计时,其中,在每次执行树深度加1之后,判断当前计时的翻译时间是否达到翻译时间阈值,若当前计时的翻译时间达到翻译时间阈值,则翻译结束。
依据本发明的另一个方面,提供了一种基于执行树深度的二进制翻译装置。
根据本发明的二进制翻译装置包括:初始化模块,用于开始构造超级块时,将执行树深度初始化为0,并获取预设的执行树深度阈值,从预设的起始地址所在的基本块开始翻译;翻译模块,用于翻译获取到的基本块;第一获取模块,用于当翻译的基本块的当前指令为直接跳转指令,获取直接跳转指令进入的新基本块,并由翻译模块进行翻译;第二获取模块,用于当翻译的基本块的当前指令为条件跳转指令,获取条件跳转指令跳转后的基本块和条件跳转指令的下一个基本块,由翻译模块进行翻译,并且将执行树深度加1; 第三获取模块,当翻译的基本块的当前指令为函数调用指令,则获取函数调用指令对应的函数作为基本块,由翻译模块进行翻译,并且将执行树深度加1;判断模块,用于在每次执行树深度加1之后,判断当前的执行树深度是否达到执行树深度阈值,若执行树深度达到执行树深度阈值,则翻译结束,翻译的所有基本块构成一个超级块。
进一步地,该装置还包括:存储模块,用于在翻译模块翻译一个基本块之后,存储该基本块的第一条指令的地址。
进一步地,初始化模块还用于在获取预设的执行树深度阈值的同时,获取预设的翻译时间阈值,并且在开始翻译时计时;判断模块还用于在每次执行树深度加1之后,判断当前计时的翻译时间是否达到翻译时间阈值,若当前计时的翻译时间达到翻译时间阈值,则翻译结束。
通过本发明,在进行二进制翻译时,从预设的起始地址所在的基本块开始翻译,在翻译时,若翻译的基本块的当前指令为直接跳转指令,则翻译直接跳转指令进入的基本块;若翻译的基本块的当前指令为条件跳转指令,则翻译条件跳转指令跳转后的基本块和条件跳转指令的下一个基本块,并且将执行树深度加1;若翻译的基本块的当前指令为函数调用指令,则番薯函数调用指令对应的函数,并且将执行树深度加1,当执行树深度达到执行树深度阈值时,翻译结束,翻译的所有基本块构成一个超级块。通过本发明,能够提升执行翻译程序的性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于康烁,未经康烁许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410688378.5/2.html,转载请声明来源钻瓜专利网。