[发明专利]一种面向虚拟化的基于规则学习的二进制翻译方法在审
申请号: | 202010625228.5 | 申请日: | 2020-07-01 |
公开(公告)号: | CN113885883A | 公开(公告)日: | 2022-01-04 |
发明(设计)人: | 张为华;梁龙飞;蒋金虎 | 申请(专利权)人: | 复旦大学;上海新氦类脑智能科技有限公司 |
主分类号: | G06F8/52 | 分类号: | G06F8/52;G06F40/16 |
代理公司: | 上海德昭知识产权代理有限公司 31204 | 代理人: | 郁旦蓉 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 虚拟 基于 规则 学习 二进制 翻译 方法 | ||
1.一种面向虚拟化的基于规则学习的二进制翻译方法,用于将源代码基于一种编译方式生成的待翻译代码翻译成基于另一种编译方式生成的目标代码,其特征在于,包括:
数据准备步骤,获取需要翻译的多行二进制的所述待翻译代码;
代码翻译步骤,将所述待翻译代码输入到预先完成翻译训练的翻译学习模型,该翻译学习模型通过最终翻译规则获得与所述待翻译代码对应的所述目标代码;
其中,对所述翻译学习模型进行的所述翻译训练的具体步骤包括:
构建训练用数据集步骤,所述翻译学习模型将基于同一段多行源代码且由两种不同编译方式对该源代码分别编译获得的训练用待翻译代码和训练用目标代码作为训练用数据集;
构建范围步骤,基于预定的源代码行数规则将所述多行源代码依序分为多个部分,并基于每个部分中的所述源代码与所述训练用待翻译代码和所述训练用目标代码的对应关系将所述训练用数据集划分为相应的多个待处理范围;
当前状态获取步骤,将所述多个待处理范围中的第一个待处理范围作为当前范围,以及对所述当前范围内的所述二进制代码通过二进制指令解析获取当前翻译规则;
中间状态设定步骤,将所述当前范围设定为中间范围,并将所述当前规则设定为中间规则;
状态更新步骤,依序从多个所述待处理范围中获得所述中间范围后的一个所述待处理范围作为新的当前范围,并在新的所述当前范围内的所述二进制代码通过所述二进制指令解析获取新的所述当前翻译规则;
规则判断步骤,进入所述中间状态获取步骤直至所述当前翻译规则与暂存翻译规则的相似度达到预设的预值;
翻译规则执行步骤,将所述当前规则作为翻译规则,并运用所述翻译规则对所述数据集中的所述训练用待翻译代码进行逐行翻译得到待验证目标代码;
训练完成判断步骤,判断每一行所述待验证目标代码与对应的所述训练用目标代码完全一致,则将所述翻译规则作为所述翻译学习模型的最终翻译规则,并将该翻译学习模型作为所述完成预设的翻译学习模型输出。
2.根据权利要求1所述的一种面向虚拟化的基于规则学习的二进制翻译方法,其特征在于:
其中,所述训练完成步骤中,若某一行中若得到的所述待验证目标代码与对应的所述训练用目标代码部分一致,则引入一个约束条件,基于所述某一行中得到的所述待验证目标代码和此行中的所述训练用待翻译代码生成一个与所述约束条件相对应的虚拟约束触点,
所述训练用待翻译代码通过所述约束条件和所述翻译规则获得的所述待验证目标代码与对应的所述训练用目标代码完全一致。
所述最终翻译规则在进行翻译过程中触发所述虚拟约束触电时,将所述最终翻译规则和所述约束条件一起作为翻译规则对含有所述虚拟约束触电的一行二进制代码进行翻译。
3.根据权利要求1所述的一种面向虚拟化的基于规则学习的二进制翻译方法,其特征在于:
其中,所述训练完成步骤在特殊情况下存在的一行中若得到的所述待验证目标代码与对应的所述训练用目标代码完全不一致,则生成一个虚拟跳转触点,
所述最终翻译规则在进行翻译过程中触发所述虚拟跳转触点时,则所述最终翻译规则不对含有所述虚拟跳转触电的一行二进制代码进行翻译,并跳转到该行二进制代码的下一行,对所述下一行的二进制代码进行基于所述最终翻译规则的翻译。
4.根据权利要求1所述的一种面向虚拟化的基于规则学习的二进制翻译方法,其特征在于:
其中,所述预定的源代码行数规则为,基于等差数列并以一行为公差、首项为第一行将所述多行源代码的按行数依序划分为所述多个部分。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学;上海新氦类脑智能科技有限公司,未经复旦大学;上海新氦类脑智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010625228.5/1.html,转载请声明来源钻瓜专利网。