【CN110007962A】一种基于代码自动生成的指令集模拟方法【专利】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201910175584.9
(22)申请日 2019.03.08
(71)申请人 浙江大学
地址 310058 浙江省杭州市西湖区余杭塘
路866号
(72)发明人 骆华鲲 蔡铭
(74)专利代理机构 杭州求是专利事务所有限公
司 33200
代理人 邱启旺
(51)Int.Cl.
G06F 9/30(2006.01)
(54)发明名称
一种基于代码自动生成的指令集模拟方法
(57)摘要
本发明公开了一种基于代码自动生成的指
令集模拟方法。
该方法针对目前指令集模拟器人
工开发费时费力的问题,先将指令集信息按特定
编码规则进行保存,再由编码程序解析并提取上
述指令信息。
由指令的操作码和各特征段信息,
编码程序可自动生成指令集模拟器的译码模块
代码;由指令执行信息,编码程序可自动生成指
令集模拟器执行模块代码。
该方法适用于多种类
型的指令集,能有效降低开发人员的编程工作
量,提高指令集模拟器的开发效率,具有较好的
应用前景。
权利要求书1页 说明书3页 附图1页CN 110007962 A 2019.07.12
C N 110007962
A
权 利 要 求 书1/1页CN 110007962 A
1.一种基于代码自动生成的指令集模拟方法,其特征在于,具体包括如下步骤:
(1)对目标指令集中所有指令进行编码,得指令编码,并将所有指令编码汇总保存至指令集编码文件中。
(2)读取步骤1的指令集编码文件,汇总所有指令的特征段分布情况,生成指令结构体。
(3)读取步骤1的指令集编码文件,提取所有指令的操作码分布,并按操作码长度对分布作降序排序。
依次为所有分布生成相应的译码代码,最终汇总成完整的指令集模拟器译码模块。
(4)读取步骤1的指令集编码文件,提取每条指令的执行信息,根据执行信息生成指令函数,所有指令函数共同组成指令模拟器的执行模块。
(5)指令集模拟器译码模块通过匹配指令操作码确定指令类型,并提取指令各特征段信息。
指令集模拟器执行模块根据指令类型,执行指令对应操作。
两模块共同组成指令集模拟器。
2.根据权利要求1所述的基于代码自动生成的指令集模拟方法,其特征是,所述步骤1中,指令编码记录了指令的格式信息与执行信息。
任意一条指令的编码表示为:NA:指令名
特征段编码
DT:数据类型操作数
EX:指令执行表达式
(DE:延迟周期数)
特征段编码记录指令各特征段的分布情况,编码格式为“特征段名[位置]”。
将指令内所有特征段都按上述格式编码,并连接组合,即可得到整条指令的特征段编码。
3.根据权利要求1所述的基于代码自动生成的指令集模拟方法,其特征是,所述步骤2具体为:指令结构体是指令集模拟器运行过程中保存单条指令信息的数据结构,保存指令各特征段信息和指令函数指针。
在结构体中生成指令函数指针属性。
特征段属性通过下述方法生成:遍历指令集编码文件,归纳整个指令集包含的特征段种类,并统计各特征段长度。
若存在同名特征段,其长度按最大值记。
根据特征段长度,在指令结构体中定义各特征段同名属性。
4.根据权利要求1所述的基于代码自动生成的指令集模拟方法,其特征是,所述步骤3具体为:提取所有指令的操作码分布,并按操作码长度对分布作降序排序。
依次为各操作码分布生成识别语句,且用识别语句包裹该分布下提取指令特征段信息的代码。
指令各特征段信息保存在步骤2定义的指令结构体同名属性中。
在每条指令的译码代码末尾,对指令结构体的函数指针进行赋值,函数名称统一命名为op_NA,其中NA是编码规则中的指令名。
5.根据权利要求1所述的基于代码自动生成的指令集模拟方法,其特征是,所述步骤4具体为:为每条指令生成一个指令函数,指令函数统一命名为op_NA。
所有指令函数均可模块化划分为声明变量、赋值变量、执行操作和结果写回四大模块。
其中,指令编码中的DT编码被映射为声明变量和赋值变量模块,EX编码被映射为执行操作模块,DT和DE编码被映射为结果写回模块。
2。