基于快速模拟器QEMU的分支指令抓取方法和装置制造方法及图纸

技术编号:18349911 阅读:52 留言:0更新日期:2018-07-01 22:46
本发明专利技术提供一种基于快速模拟器QEMU的分支指令抓取方法和装置。本发明专利技术提供的基于快速模拟器QEMU的分支指令抓取方法,包括:在QEMU执行获取待翻译指令时,判断当前所获取的待翻译指令是否为分支指令,若是,则根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令,并将上述分支指令的属性信息进行存储;其中,上述分支指令的属性信息包括上述分支指令的操作码、上述分支指令的指令地址和上述分支指令的跳转地址。本发明专利技术提供的基于快速模拟器QEMU的分支指令抓取方法和装置,可抓取不同处理器架构的执行程序中的分支指令,兼容性高,成本低。

【技术实现步骤摘要】
基于快速模拟器QEMU的分支指令抓取方法和装置
本专利技术涉及计算机技术,尤其涉及一种基于快速模拟器QEMU的分支指令抓取方法和装置。
技术介绍
分支预测器是中央处理器(CentralProcessingUnit,简称CPU)的一个关键部件,其可以帮助CPU更快的获取指令,加快CPU的运行速度,而分支指令集可以在流片前对分支指令预测器进行验证与测试,从而确定分支预测器的性能,进而决定是否需要对分支预测器做出改进。因此,为有效预测分支预测器的性能,抓取执行程序中的分支指令显得尤为重要。现有技术一中,通过在CPU主板上添加监控电路,并将该监控电路与存储器连接,以通过监控电路抓取执行程序分支指令,并将抓取到的分支指令存储到存储器中。现有技术二中,通过在执行程序中加入一段监控程序,采用该监控程序来抓取执行程序分支指令。现有技术一及现有技术二提供的分支指令抓取方法均只能抓取一种处理器架构执行程序中的分支指令,无法适用于抓取其他处理器架构的执行程序中的分支指令。
技术实现思路
本专利技术提供一种基于快速模拟器QEMU的分支指令抓取方法和装置,以解决现有技术中的分支指令抓取方法只能抓取一种处理器架构的执行程序中的分支指令,无法抓取其他处理器架构的执行程序中的分支指令的问题。本专利技术第一方面提供一种基于快速模拟器QEMU的分支指令抓取方法,包括:在QEMU执行获取待翻译指令时,判断当前所获取的待翻译指令是否为分支指令;若是,则根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令,并将所述分支指令的属性信息进行存储;其中,所述分支指令的属性信息包括所述分支指令的操作码、所述分支指令的指令地址和所述分支指令的跳转地址。进一步地,所述根据目标程序架构对当前的分支指令执行翻译操作,并将所述分支指令的属性信息进行存储,具体包括:根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令;根据所述翻译分支指令所属的基本块中其他的翻译指令、所述翻译分支指令、所述当前的分支指令的属性信息得到翻译块,并将所述翻译块存储至缓存块表中;其中,所述缓存块表中包括至少一个翻译块,每个翻译块包括一条翻译分支指令;将所述分支指令的属性信息存储至分支指令抓取文件中。进一步地,所述判断当前所获取的待翻译指令是否为分支指令之前,所述方法还包括:根据当前所获取的待翻译指令的地址,判断所述缓存块表中是否存在第一翻译块,所述第一翻译块为包含所述待翻译指令对应的翻译指令的翻译块;若所述缓存块表中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令。进一步地,所述方法还包括:若所述缓存块表中存在所述第一翻译块,则获取所述第一翻译块中的分支指令的属性信息;将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中。进一步地,所述将所述分支指令的属性信息存储至分支指令抓取文件中之后,所述方法还包括:执行所述翻译块,获取下一条待翻译指令的地址;判断所述下一条待翻译指令是否为分支指令,直至待翻译程序中的每一条待翻译指令均执行翻译操作为止。进一步地,若所述缓存块表中不存在所述第一翻译块,则在判断当前所获取的待翻译指令是否为分支指令之前,所述方法还包括:根据tb-fast_slow函数查询主机的物理内存,判断所述主机的物理内存中是否存在所述第一翻译块;若所述主机的物理内存中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令。进一步地,所述方法还包括:若所述主机的物理内存中存在所述第一翻译块,则将所述第一翻译块存储至所述缓存块表中;获取所述第一翻译块中的分支指令的属性信息;将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中。进一步地,所述将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中,所述方法还包括:执行所述第一翻译块,获取一条待翻译指令的地址;判断所述下一条待翻译指令是否为分支指令,直至待翻译程序中的每一条待翻译指令均执行翻译操作为止。进一步地,若所述当前所获取的待翻译指令为分支指令,则根据gen_compute_branch函数、tcg_gen_code函数和目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令。进一步地,所述方法还包括:屏蔽QEMU中的tb_add_jump函数,以屏蔽所述QEMU中的直接块链机制。本专利技术第二方面提供一种基于快速模拟器QEMU的分支指令抓取装置,包括:判断模块和翻译存储模块,其中,所述判断模块,用于在QEMU执行获取待翻译指令时,判断当前所获取的待翻译指令是否为分支指令;所述翻译存储模块,用于在所述判断模块判断当前所获取的待翻译指令为分支指令时,根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令,并将所述分支指令的属性信息进行存储;其中,所述分支指令的属性信息包括所述分支指令的操作码、所述分支指令的指令地址和所述分支指令的跳转地址。进一步地,所述翻译存储模块,具体用于根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令,并根据所述翻译分支指令所属的基本块中其他的翻译指令、所述翻译分支指令、所述当前的分支指令的属性信息得到翻译块,并将所述翻译块存储至缓存块表中,以及将所述分支指令的属性信息存储至分支指令抓取文件中;其中,所述缓存块表中包括至少一个翻译块,每个翻译块包括一条翻译分支指令。进一步地,所述判断模块,还用于在判断当前所获取的待翻译指令是否为分支指令之前,根据当前所获取的待翻译指令的地址,判断所述缓存块表中是否存在第一翻译块,若所述缓存块表中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令;其中,所述第一翻译块为包含所述待翻译指令对应的翻译指令的翻译块。进一步地,所述装置还包括:第一获取模块和第一存储模块;所述第一获取模块,用于在所述判断模块判断所述缓存块表中存在所述第一翻译块时,获取所述第一翻译块中的分支指令的属性信息;所述第一存储模块,用于将所述第一翻译块中的分支指令的属性信息存储至所述分支指令文件中。进一步地,所述装置还包括第一处理模块,所述第一处理模块,用于在所述翻译存储模块将所述分支指令的属性信息存储至分支指令抓取文件中之后,执行所述翻译块,获得下一条待翻译指令的地址;所述判断模块,还用于判断所述下一条待翻译指令是否为分支指令,直至待翻译程序中的每一条待翻译指令均执行翻译操作为止。进一步地,所述判断模块还用于在判断所述缓存块表中不存在所述第一翻译块时,在判断当前所获取的待翻译指令是否为分支指令之前,根据tb-fast_slow函数查询主机的物理内存,判断所述主机的物理内存中是否存在所述第一翻译块,并在判断所述主机的物理内存中不存在所述第一翻译块时,判断当前所获取的待翻译指令是否为分支指令。进一步地,所述装置还包括第二获取模块和第二存储模块,所述第二存储模块,用于在判断模块判断所述主机的物理内存中存在所述第一翻译块时,将所述第一翻译块存储至所述缓存块表中;所述第二获取模块,用于获取所述第一翻译块中的分支指令的属性信息;所述第二存储模块,还用于将所述第一翻译块中的分支指令的属性信息存储在所述分支指令文件中。进一步地,还包括第二处理模块,所述第二处理模块用于在所述第一存储模块或第二存储模块将所述第一翻译块本文档来自技高网...
基于快速模拟器QEMU的分支指令抓取方法和装置

【技术保护点】
1.一种基于快速模拟器QEMU的分支指令抓取方法,其特征在于,包括:在QEMU执行获取待翻译指令时,判断当前所获取的待翻译指令是否为分支指令;若是,则根据目标程序架构对当前的分支指令执行翻译操作,并将所述分支指令的属性信息进行存储;其中,所述分支指令的属性信息包括所述分支指令的操作码、所述分支指令的指令地址和所述分支指令的目标地址。

【技术特征摘要】
1.一种基于快速模拟器QEMU的分支指令抓取方法,其特征在于,包括:在QEMU执行获取待翻译指令时,判断当前所获取的待翻译指令是否为分支指令;若是,则根据目标程序架构对当前的分支指令执行翻译操作,并将所述分支指令的属性信息进行存储;其中,所述分支指令的属性信息包括所述分支指令的操作码、所述分支指令的指令地址和所述分支指令的目标地址。2.根据权利要求1所述的方法,其特征在于,所述根据目标程序架构对当前的分支指令执行翻译操作,并将所述分支指令的属性信息进行存储,具体包括:根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令;根据所述翻译分支指令所属的基本块中其他的翻译指令、所述翻译分支指令、所述当前的分支指令的属性信息得到翻译块,并将所述翻译块存储至缓存块表中;其中,所述缓存块表中包括至少一个翻译块,每个翻译块包括一条翻译分支指令;将所述分支指令的属性信息存储至分支指令抓取文件中。3.根据权利要求2所述的方法,其特征在于,所述判断当前所获取的待翻译指令是否为分支指令之前,所述方法还包括:根据当前所获取的待翻译指令的地址,判断所述缓存块表中是否存在第一翻译块,所述第一翻译块为包含所述待翻译指令对应的翻译指令的翻译块;若所述缓存块表中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:若所述缓存块表中存在所述第一翻译块,则获取所述第一翻译块中的分支指令的属性信息;将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中。5.根据权利要求2所述的方法,其特征在于,所述将所述分支指令的属性信息存储至分支指令抓取文件中之后,所述方法还包括:执行所述翻译块,获取下一条待翻译指令的地址;判断所述下一条待翻译指令是否为分支指令,直至待翻译程序中的每一条待翻译指令均执行翻译操作为止。6.根据权利要求3所述的方法,其特征在于,若所述缓存块表中不存在所述第一翻译块,则在判断当前所获取的待翻译指令是否为分支指令之前,所述方法还包括:根据tb-fast_slow函数查询主机的物理内存,判断所述主机的物理内存中是否存在所述第一翻译块;若所述主机的物理内存中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:若所述主机的物理内存中存在所述第一翻译块,则将...

【专利技术属性】
技术研发人员:张立志李策高新博汪文祥
申请(专利权)人:龙芯中科技术有限公司
类型:发明
国别省市:北京,11

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

1