当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于代码自动生成的指令集模拟方法技术

技术编号:21604938 阅读:66 留言:0更新日期:2019-07-13 18:02
本发明专利技术公开了一种基于代码自动生成的指令集模拟方法。该方法针对目前指令集模拟器人工开发费时费力的问题,先将指令集信息按特定编码规则进行保存,再由编码程序解析并提取上述指令信息。由指令的操作码和各特征段信息,编码程序可自动生成指令集模拟器的译码模块代码;由指令执行信息,编码程序可自动生成指令集模拟器执行模块代码。该方法适用于多种类型的指令集,能有效降低开发人员的编程工作量,提高指令集模拟器的开发效率,具有较好的应用前景。

An Instruction Set Simulation Method Based on Automatic Code Generation

【技术实现步骤摘要】
一种基于代码自动生成的指令集模拟方法
本专利技术涉及指令集模拟,尤其涉及一种基于代码自动生成的指令集模拟方法。
技术介绍
由于指令集模拟器具有摆脱硬件数目限制,运行过程可调试,随时获取设备状态等优点,在硬件仿真、芯片设计等领域都得到了广泛的应用。然而,设计并定制一款特定的指令集模拟器却是一项非常复杂的工作。模拟器的技术难点在于正确地模拟指令执行。指令的执行过程可分为:取指、译码、执行三个步骤。译码步骤被模拟器映射成译码模块,执行步骤则被映射成执行模块。译码模块通过匹配指令操作码,确定指令类型,并根据指令编码格式,分割提取各特征段信息。实际情况下,由于一个指令集往往包含上百条指令,而译码模块又需要支持所有指令类型的识别,故若指令集操作码分布无规律,则人工编写相关模块代码的工作量极大。执行模块由整套指令集的指令函数组成。由于指令函数与指令种类一一对应,故若指令集数目庞大,指令函数的编写工作将变得非常繁重。按平均每个指令函数有20行代码计算,对于上百条指令的指令集而言,则仅指令函数一项的开发工作就包含了几千行代码,人工实现不仅费时费力而且容易出错。
技术实现思路
本专利技术的目的在于针对人工手动实现指令集模拟器译码模块和执行模块工作量大且易错的问题,提供了一种基于代码自动生成的指令集模拟方法。本专利技术的目的是通过以下技术方案来实现的:一种基于代码自动生成的指令集模拟方法,具体包括如下步骤:(1)对目标指令集中所有指令进行编码,得指令编码,并将所有指令编码汇总保存至指令集编码文件中;(2)读取步骤1的指令集编码文件,汇总所有指令的特征段分布情况,生成指令结构体;(3)读取步骤1的指令集编码文件,提取所有指令的操作码分布,并按操作码长度对分布作降序排序。依次为所有分布生成相应的译码代码,最终汇总成完整的指令集模拟器译码模块;(4)读取步骤1的指令集编码文件,提取每条指令的执行信息,根据执行信息生成指令函数,所有指令函数共同组成指令模拟器的执行模块;(5)指令集模拟器译码模块通过匹配指令操作码确定指令类型,并提取指令各特征段信息。指令集模拟器执行模块根据指令类型,执行指令对应操作。两模块共同组成指令集模拟器。进一步地,所述步骤1中,指令编码记录了指令的格式信息与执行信息。任意一条指令的编码表示为:NA:指令名特征段编码DT:数据类型操作数EX:指令执行表达式(DE:延迟周期数)特征段编码记录指令各特征段的分布情况,编码格式为“特征段名[位置]”。将指令内所有特征段都按上述格式编码,并连接组合,即可得到整条指令的特征段编码。进一步地,所述步骤2具体为:指令结构体是指令集模拟器运行过程中保存单条指令信息的数据结构,保存指令各特征段信息和指令函数指针。在结构体中生成指令函数指针属性。特征段属性通过下述方法生成:遍历指令集编码文件,归纳整个指令集包含的特征段种类,并统计各特征段长度。若存在同名特征段,其长度按最大值记。根据特征段长度,在指令结构体中定义各特征段同名属性。进一步地,所述步骤3具体为:提取所有指令的操作码分布,并按操作码长度对分布作降序排序。依次为各操作码分布生成识别语句,且用识别语句包裹该分布下提取指令特征段信息的代码。指令各特征段信息保存在步骤2定义的指令结构体同名属性中。在每条指令的译码代码末尾,对指令结构体的函数指针进行赋值,函数名称统一命名为op_NA,其中NA是编码规则中的指令名。进一步地,所述步骤4具体为:为每条指令生成一个指令函数,指令函数统一命名为op_NA。所有指令函数均可模块化划分为声明变量、赋值变量、执行操作和结果写回四大模块。其中,指令编码中的DT编码被映射为声明变量和赋值变量模块,EX编码被映射为执行操作模块,DT和DE编码被映射为结果写回模块。本专利技术的有益效果是,开发人员只需按特定格式录入指令手册中的指令信息,即可自动生成译码函数和指令函数,有效地降低开发新型指令集模拟器的工作量。附图说明图1是本方法流程图。具体实施方式本专利技术一种基于代码自动生成的指令集模拟方法,具体包括如下步骤:1、对目标指令集中所有指令进行编码,得指令编码,并将所有指令编码汇总保存至指令集编码文件中。任意一条指令的编码表示为:NA:指令名特征段编码DT:数据类型操作数EX:指令执行表达式(DE:延迟周期数)特征段编码记录指令各特征段的分布情况,编码格式为“特征段名[位置]”。将指令内所有特征段都按上述格式编码,并连接组合,即可得到整条指令的特征段编码。其中,由于不是所有指令都包含延迟周期,故DE编码用括号标注。2、读取步骤1的指令集编码文件,汇总所有指令的特征段分布情况,生成指令结构体;指令结构体是指令集模拟器运行过程中保存单条指令信息的数据结构,保存指令各特征段信息和指令函数指针。在结构体中生成指令函数指针属性。特征段属性通过下述方法生成:遍历指令集编码文件,归纳整个指令集所包含的特征段种类,并统计各特征段长度。若存在同名特征段,其长度按最大值记。根据特征段长度,在指令结构体中定义与各特征段同名的属性。如特征段src长度为5,1字节即可记录特征段信息,故特征段属性可定义为charsrc。3、读取步骤1的指令集编码文件,提取所有指令的操作码分布,并按操作码长度对分布作降序排序。依次为所有分布生成相应的译码代码,最终汇总成完整的指令集模拟器译码模块;提取所有指令的操作码分布,并按操作码长度对分布作降序排序。依次为各操作码分布生成识别语句,且用识别语句包裹该分布下提取指令特征段信息的代码。指令各特征段信息保存在步骤2定义的指令结构体同名属性中。在每条指令的译码代码末尾,对指令结构体的函数指针进行赋值,函数名称统一命名为op_NA,其中NA是编码规则中的指令名。对单条指令而言,指令集模拟器通过译码模块确定其指令函数指针,并通过该指针调取执行模块相应的指令函数。4、读取步骤1的指令集编码文件,提取每条指令的执行信息,根据执行信息生成指令函数,所有指令函数共同组成指令模拟器的执行模块;为每条指令生成一个指令函数,指令函数统一命名为op_NA。所有指令函数均可模块化划分为声明变量、赋值变量、执行操作和结果写回四大模块。其中,指令的DT编码被映射为声明变量和赋值变量模块,EX编码被映射为执行操作模块,DT和DE编码被映射为结果写回模块。本文档来自技高网...

【技术保护点】
1.一种基于代码自动生成的指令集模拟方法,其特征在于,具体包括如下步骤:(1)对目标指令集中所有指令进行编码,得指令编码,并将所有指令编码汇总保存至指令集编码文件中。(2)读取步骤1的指令集编码文件,汇总所有指令的特征段分布情况,生成指令结构体。(3)读取步骤1的指令集编码文件,提取所有指令的操作码分布,并按操作码长度对分布作降序排序。依次为所有分布生成相应的译码代码,最终汇总成完整的指令集模拟器译码模块。(4)读取步骤1的指令集编码文件,提取每条指令的执行信息,根据执行信息生成指令函数,所有指令函数共同组成指令模拟器的执行模块。(5)指令集模拟器译码模块通过匹配指令操作码确定指令类型,并提取指令各特征段信息。指令集模拟器执行模块根据指令类型,执行指令对应操作。两模块共同组成指令集模拟器。

【技术特征摘要】
1.一种基于代码自动生成的指令集模拟方法,其特征在于,具体包括如下步骤:(1)对目标指令集中所有指令进行编码,得指令编码,并将所有指令编码汇总保存至指令集编码文件中。(2)读取步骤1的指令集编码文件,汇总所有指令的特征段分布情况,生成指令结构体。(3)读取步骤1的指令集编码文件,提取所有指令的操作码分布,并按操作码长度对分布作降序排序。依次为所有分布生成相应的译码代码,最终汇总成完整的指令集模拟器译码模块。(4)读取步骤1的指令集编码文件,提取每条指令的执行信息,根据执行信息生成指令函数,所有指令函数共同组成指令模拟器的执行模块。(5)指令集模拟器译码模块通过匹配指令操作码确定指令类型,并提取指令各特征段信息。指令集模拟器执行模块根据指令类型,执行指令对应操作。两模块共同组成指令集模拟器。2.根据权利要求1所述的基于代码自动生成的指令集模拟方法,其特征是,所述步骤1中,指令编码记录了指令的格式信息与执行信息。任意一条指令的编码表示为:NA:指令名特征段编码DT:数据类型操作数EX:指令执行表达式(DE:延迟周期数)特征段编码记录指令各特征段的分布情况,编码格式为“特征段名[位置]”。将指令内所有特征段都按上述格式编码,并连接组合,即可得到整条指令的特征段编码。3.根据权利要求1所述的基于代码自动...

【专利技术属性】
技术研发人员:骆华鲲蔡铭
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1