[发明专利]基于快速模拟器QEMU的分支指令抓取方法和装置有效

专利信息
申请号: 201611144953.0 申请日: 2016-12-13
公开(公告)号: CN108228239B 公开(公告)日: 2021-04-20
发明(设计)人: 张立志;李策;高新博;汪文祥 申请(专利权)人: 龙芯中科技术股份有限公司
主分类号: G06F9/38 分类号: G06F9/38;G06F9/455
代理公司: 北京同立钧成知识产权代理有限公司 11205 代理人: 杨泽;刘芳
地址: 100095 北京市海淀*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 快速 模拟器 qemu 分支 指令 抓取 方法 装置
【权利要求书】:

1.一种基于快速模拟器QEMU的分支指令抓取方法,其特征在于,包括:

在QEMU执行获取待翻译指令时,判断当前所获取的待翻译指令是否为分支指令;

若是,则根据目标程序架构对当前的分支指令执行翻译操作,并将所述分支指令的属性信息进行存储;其中,所述分支指令的属性信息包括所述分支指令的操作码、所述分支指令的指令地址和所述分支指令的目标地址;

所述根据目标程序架构对当前的分支指令执行翻译操作,并将所述分支指令的属性信息进行存储,具体包括:

根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令;根据所述翻译分支指令所属的基本块中其他的翻译指令、所述翻译分支指令、所述当前的分支指令的属性信息得到翻译块,并将所述翻译块存储至缓存块表中;其中,所述缓存块表中包括至少一个翻译块,每个翻译块包括一条翻译分支指令;在所述QEMU从执行程序的第一条指令开始对执行程序中的指令逐条进行翻译操作时,所述基本块为所述第一条指令到分支指令之间的指令且包括所示分支指令对应的翻译指令;将所述分支指令的属性信息存储至分支指令抓取文件中;

所述判断当前所获取的待翻译指令是否为分支指令之前,所述方法还包括:

根据当前所获取的待翻译指令的地址,判断所述缓存块表中是否存在第一翻译块,所述第一翻译块为包含所述待翻译指令对应的翻译指令的翻译块;

若所述缓存块表中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令;

若所述缓存块表中存在所述第一翻译块,则获取所述第一翻译块中的分支指令的属性信息;将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中。

2.根据权利要求1所述的方法,其特征在于,所述将所述分支指令的属性信息存储至分支指令抓取文件中之后,所述方法还包括:

执行所述翻译块,获取下一条待翻译指令的地址;

判断所述下一条待翻译指令是否为分支指令,直至待翻译程序中的每一条待翻译指令均执行翻译操作为止。

3.根据权利要求1所述的方法,其特征在于,若所述缓存块表中不存在所述第一翻译块,则在判断当前所获取的待翻译指令是否为分支指令之前,所述方法还包括:

根据tb-fast_slow函数查询主机的物理内存,判断所述主机的物理内存中是否存在所述第一翻译块;

若所述主机的物理内存中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

若所述主机的物理内存中存在所述第一翻译块,则将所述第一翻译块存储至所述缓存块表中;

获取所述第一翻译块中的分支指令的属性信息;

将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中。

5.根据权利要求1或4所述的方法,其特征在于,所述将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中之后,所述方法还包括:

执行所述第一翻译块,获取下一条待翻译指令的地址;

判断所述下一条待翻译指令是否为分支指令,直至待翻译程序中的每一条待翻译指令均执行翻译操作为止。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:

屏蔽QEMU中的tb_add_jump函数,以屏蔽所述QEMU中的直接块链机制。

7.一种基于快速模拟器QEMU的分支指令抓取装置,其特征在于,包括:判断模块、翻译存储模块、第一获取模块和第一存储模块,其中,

所述判断模块,用于在QEMU执行获取待翻译指令时,判断当前所获取的待翻译指令是否为分支指令;

所述翻译存储模块,用于在所述判断模块判断当前所获取的待翻译指令为分支指令时,根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令,并将所述分支指令的属性信息进行存储;其中,所述分支指令的属性信息包括所述分支指令的操作码、所述分支指令的指令地址和所述分支指令的跳转地址;

所述翻译存储模块,具体用于根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令,并根据所述翻译分支指令所属的基本块中其他的翻译指令、所述翻译分支指令、所述当前的分支指令的属性信息得到翻译块,并将所述翻译块存储至缓存块表中,以及将所述分支指令的属性信息存储至分支指令抓取文件中;其中,所述缓存块表中包括至少一个翻译块,每个翻译块包括一条翻译分支指令;在所述QEMU从执行程序的第一条指令开始对执行程序中的指令逐条进行翻译操作时,所述基本块为所述第一条指令到分支指令之间的指令且包括所示分支指令对应的翻译指令;

所述第一获取模块,用于在所述判断模块判断所述缓存块表中存在第一翻译块时,获取所述第一翻译块中的分支指令的属性信息;

所述第一存储模块,用于将所述第一翻译块中的分支指令的属性信息存储至所述分支指令文件中;

所述判断模块,还用于在判断当前所获取的待翻译指令是否为分支指令之前,根据当前所获取的待翻译指令的地址,判断所述缓存块表中是否存在第一翻译块,若所述缓存块表中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令;其中,所述第一翻译块为包含所述待翻译指令对应的翻译指令的翻译块。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于龙芯中科技术股份有限公司,未经龙芯中科技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201611144953.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top