基于规则推理的虚拟指令翻译

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第13卷第3期信息工程大学学报Vol.13No.32012年6月Journal of Information Engineering University Jun.2012收稿日期:2012-

02-22;修回日期:2012-03-19基金项目:国家863计划资助项目(2009AA01Z434)

作者简介:赵远(1984-),男,硕士生,主要研究方向为信息安全,

E-mail :zbzhaoyuan@gmail.com 。DOI :10.3969/j.issn.1671-0673.2012.03.019基于规则推理的虚拟指令翻译

赵远,曾光裕,王炜,崔晨(信息工程大学信息工程学院,河南郑州450002)

摘要:研究了虚拟指令翻译技术,设计了一种基于规则推理的虚拟指令翻译器,实现目标指令

到虚拟指令的翻译。该翻译器以指令解码器的解码结果为输入,匹配指令翻译规则,充分利用

了目标指令的语义信息。同时,翻译规则与控制逻辑的分离使得添加新指令集及修改翻译策

略相对容易。给出了关键问题的解决方法,

测试结果表明,该翻译器能正确翻译多种指令集,具有较高的实用价值。

关键词:规则推理;虚拟指令;翻译器;指令解码器

中图分类号:TP311文献标识码:A 文章编号:1671-

0673(2012)03-0352-06Virtual Instruction Translation Based on Rule-Based Reasoning

ZHAO Yuan ,ZENG Guang-yu ,WANG Wei ,CUI Chen

(Institute of Information Engineering ,Information Engineering University ,Zhengzhou 450002,China )

Abstract :In-depth research on virtual instruction translation techniques leads to a virtual instruction

translator based on rule-based reasoning ,which can convert target instructions to virtual instruc-

tions.Taking the results of instruction decoder as the input ,the translator matches the instruction

translation rules and makes full use of target instructions ’semantic information.Since translation

rules are separated from the control logic ,new target instructions can be easily added and translation

policies can be conveniently modified.Solutions to key problems are presented ,and experiments

show that this translator can deal with diverse instruction sets ,which means significant in applica-

tion.

Key words :rule-based reasoning ;virtual instruction ;translator ;instruction decoder

0引言

相对于真实处理器指令,虚拟指令形式更加灵活、修改相对方便,能够屏蔽不同指令集的差异、减少系

统设计冗余,广泛应用于计算机体系结构设计

[1]、二进制翻译[2]和代码生成[3]等领域。多种处理器二进

制程序代码的归一化表示可简化不同目标代码的处理过程,将不同目标指令翻译为虚拟指令是实现归一化的有效方法。目标指令的二进制代码作为处理器直接识别和处理的格式,

含有最为丰富的指令语义信息。在对二进制代码进行处理时,往往需要指令解码器的支持。解码器依据处理器手册中规定的指令编码规范,按照一定的编码模式对二进制指令进行解析,输出结构化表示的指令语义信息,并可以据此得到

第3期赵远等:基于规则推理的虚拟指令翻译353程序的反汇编代码。

目前常见的将目标指令翻译为虚拟指令的方法有两类:基于指令集描述语言(Instruction Set Descrip-tion Language ,ISDL )的翻译方法和基于指令字典的翻译方法。然而,这些方法多局限于对目标指令反汇

编代码的分析,

不能充分利用指令解码器的解码结果。本文对现有翻译方法进行了分析,将规则推理技术引入虚拟指令的翻译,以结构化的指令解码结果匹配翻译规则,有效利用了指令的语义信息,同时实现了翻译规则与控制逻辑的分离,简化了修改指令翻译方案、支持新的目标指令集的过程。给出了翻译器的总体结构设计和关键问题的解决方法,并应用于课题组研发的多目标固件代码分析平台,验证了该方法的有效性。

1

问题描述及相关工作1.1问题描述

将目标指令翻译到虚拟指令,就是在从目标指令集体系结构(Target Instruction Set Architecture ,T-ISA )到虚拟指令集体系结构(Virtual Instruction Set Architecture ,V-ISA )的结构映射基础上,将目标指令的操作翻译为虚拟指令的操作,并保证二者语义等价的过程。

图1虚拟指令翻译示意图如图1所示,设某时刻T-ISA 的状态为S i ,对应的V-

ISA 的状态为S i ',T-ISA 上的指令inst 执行后,转换为状态S j ,

S j 对应的V-ISA 的状态为S j ',则需要寻找V-ISA 上的指令(或指令序列)inst',使得

inst'执行后的状态S j '=S j ᵡ。其中的map ()函数称为结构映射函数。

与实际指令类似,虚拟指令也由两部分组成,即操作码和操作

数。操作码规定了具体的操作动作,操作数规定了操作的对象,由不

同的寻址方式指出。一条指令的翻译可以分为操作数的翻译和操作

码的翻译两部分。前者依据状态映射函数map ()确定,后者即求解

指令序列inst'的过程,需要考虑操作码的具体语义及操作数的类型。

1.2相关工作

目前,常见的虚拟指令翻译方法主要有基于指令集描述语言(ISDL )和基于指令字典两类。

基于ISDL 的翻译方法指令集描述语言(ISDL )是一种用于描述指令的结构与行为的形式化语言。

如nML [4]

是较早的指令集描述语言,该语言用树图来描述指令集的静态结构、用形式语言来描述指令的

动态行为。基于ISDL 的翻译方法的过程[5]:

①分析目标指令的指令地址、操作码、指令长度和各个操作数;

②将上述信息与目标指令集的描述进行匹配,生成该条指令的ISDL 语义描述;

③对语义描述进行整理化简;

④将语义描述转化为对应的虚拟指令。

将语义描述转化为对应的虚拟指令需要依赖相应ISDL 的解释器。由于具体的ISDL 和虚拟指令的不同,常常需要开发专门的解释器。解释器通过词法分析、语法分析、优化、代码生成等步骤将语义描述转化为虚拟指令。虽然已有开源的ISDL 解释器,可以在其基础上进行修改,以适应不同的ISDL 和虚拟指令,但这一过程仍然工作量较大,且客观上增加了出错的可能性。

基于指令字典的翻译方法指令字典是将每一条目标指令对应的虚拟指令序列,按照一定规则或顺序进行组织的形式。基于指令字典的翻译方法,需要事先编制目标指令的字典,然后在翻译过程中,从字典中查找每一条指令对应的虚拟指令序列,对其进行替换,最终生成目标代码的虚拟指令表示形式。指令

字典的生成方式分为自动构造和人工构造两种。如在二进制翻译系统UQBT [6]中,采用语义描述语言

(SSL )描述各种机器的指令语义信息,对SSL 形式的指令描述文件用LEX 和YACC [7]先后进行词法分析

和语法分析,生成对应的中间语言字典。相比基于ISDL 的翻译方法,基于指令字典的翻译方法思路清晰,实现较简单,但是其指令翻译的质量取决于字典的容量和质量。自动构造指令字典的方式需要有机器的SSL 描述,并且对SSL 描述进行词法

相关文档
最新文档