[发明专利]反编译过程中的寄存器传播方法、装置及反编译器有效
申请号: | 201010289523.4 | 申请日: | 2010-09-17 |
公开(公告)号: | CN101963898A | 公开(公告)日: | 2011-02-02 |
发明(设计)人: | 陈耿标;林毓双 | 申请(专利权)人: | 广州迪庆电子科技有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 黄晓庆;王茹 |
地址: | 510000 广东省广州市天*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 反编译 过程 中的 寄存器 传播 方法 装置 编译器 | ||
1.一种反编译过程中的寄存器传播方法,其特征在于,包括步骤:
构造函数内的所有的指令路径;
遍历各指令所在的各指令路径,根据各指令所在的所有的指令路径,分别计算出各指令的使用定义链,得到各指令的使用定义链集;
顺序扫描各指令,根据各指令的使用定义链、预设寄存器传播规则,确定各指令的寄存器传播方式,并根据确定的寄存器传播方式进行各指令的寄存器传播。
2.根据权利要求1所述的反编译过程中的寄存器传播方法,其特征在于,所述预设寄存器传播规则包括:
对于定义了当前指令的源寄存器的第一指令,若在从该第一指令到当前指令的指令路径上,该第一指令的源操作数与目的操作数未被重新定义过,则当前指令可以传播;
若当前指令所使用的寄存器被处于不同指令路径的指令所定义,该当前指令不能被传播。
3.根据权利要求2所述的反编译过程中的寄存器传播方法,其特征在于:
当当前指令可以传播时,将该当前指令的源寄存器替换为该当前指令的使用定义链所指向的指令的源寄存器,同时删除该使用定义链所指向的指令;
当当前指令确定不能被传播时,保持该当前指令不变。
4.根据权利要求1或2或3所述的反编译过程中的寄存器传播方法,其特征在于:
所述指令路径为连续的指令的集合,当该集合中的任意一个指令被执行后,该指令的后续指令都将被执行;
和/或
所述反编译过程为C反编译器中的C反编译过程,所述函数为C函数。
5.一种反编译过程中的寄存器传播装置,其特征在于,包括:
指令路径构造单元,用于构造函数内的所有的指令路径;
与所述指令路径构造单元相连接的使用定义链单元,用于遍历各指令所在的各指令路径,根据各指令所在的所有的指令路径,分别计算出各指令的使用定义链,得到各指令的使用定义链集;
与所述使用定义链单元相连接的传播单元,用于顺序扫描各指令,根据各指令的使用定义链、预设寄存器传播规则,确定各指令的寄存器传播方式,并根据确定的寄存器传播方式进行各指令的寄存器传播。
6.根据权利要求5所述的反编译过程中的寄存器传播装置,其特征在于,所述预设寄存器传播规则包括:
对于定义了当前指令的源寄存器的第一指令,若在从该第一指令到当前指令的指令路径上,该第一指令的源操作数与目的操作数未被重新定义过,则当前指令可以传播;
若当前指令所使用的寄存器被处于不同指令路径的指令所定义,该当前指令不能被传播。
7.根据权利要求6所述的反编译过程中的寄存器传播装置,其特征在于:
当当前指令可以传播时,将该当前指令的源寄存器替换为该当前指令的使用定义链所指向的指令的源寄存器,同时删除该使用定义链所指向的指令;
当当前指令确定不能被传播时,保持该当前指令不变。
8.根据权利要求5或6或7所述的反编译过程中的寄存器传播装置,其特征在于:所述指令路径为连续的指令的集合,当该集合中的任意一个指令被执行后,该指令的后续指令都将被执行。
9.根据权利要求5或6或7所述的反编译过程中的寄存器传播装置,其特征在于:所述反编译过程为C反编译器中的C反编译过程,所述函数为C函数。
10.一种反编译器,其特征在于,该反编译器包括如权利要求5至9任意一项所述的寄存器传播装置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州迪庆电子科技有限公司,未经广州迪庆电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010289523.4/1.html,转载请声明来源钻瓜专利网。