一种模拟器的生成方法及装置制造方法及图纸

技术编号:7473749 阅读:167 留言:0更新日期:2012-07-03 04:39
本发明专利技术公开了一种模拟器的生成方法及装置,涉及生成模拟器领域,用于实现模拟器的快速移植性和高效性。一种模拟器的生成方法,包括:获取指令集配置文件;根据所述指令集配置文件生成解码表和解码算法;所述解码表包括:指令码表,指令描述表和位域表;其中,所述指令码表中记录有汇编指令操作码,所述指令描述表记录有每条汇编指令操作码的详细信息,所述位域表记录有计算每一个操作数位域上的数值的方法;根据所述解码表、所述解码算法和模块代码生成模拟器;所述模块代码是用于模拟汇编指令的动作的代码和解码过程中非解码算法的代码。本发明专利技术的方案适用于模拟器的生成。

【技术实现步骤摘要】

本专利技术涉及生成模拟器领域,尤其涉及一种模拟器的生成方法及装置
技术介绍
在设计一款芯片的同时,相应的软件也必须同时设计和实现,此时由于没有真实的芯片存在,所以必须有一种手段能够模拟真实芯片的动作,为软件的设计和调试提供环境。模拟器就是具备这种功能的软件。模拟器的基本原理是首先读入一段二进制的指令码流,通过解码器将其翻译成汇编指令,然后按照指令的定义模拟指令的动作,最终实现这段代码在目标芯片上的功能。现有的技术方案中,模拟器的一种生成方法是通过模拟器开发人员手工编写解码算法。这种方法的主要流程是1、人工分析指令集的编码格式,确定操作码涉及的位域。2、人工确定各个位域在解码算法中应用的先后顺序。3、人工确定每条指令在各个位域上对应的值。4、人工编写代码,按照上述位域的顺序,针对每个位域可能出现的值进行区分,如果可以确定操作码则返回操作码,否则进入下一个位域比较。现有的技术方案中,模拟器的另一种生成方法是通过模拟器开发人员手工分析指令集的编码格式,通过工具产生最终代码,这种方法称为半人工方法。这种方法的主要流程是1、人工分析指令集的编码格式,人工分割二进制指令的位域。2、人工确定各个位域在解码算法中应用的先后顺序。3、人工确定每条指令在各个位域上对应的值。4、通过工具产生代码。在实现上述模拟器的生成方法的过程中,专利技术人发现现有技术中至少存在如下问题首先,人工分析和编写代码的工作量很大,且容易出错,后期测试代价高;其次,人工分析和编写代码工期长;再次,通常模拟器的开发是和芯片设计同步进行的,即指令集及其编码格式还没有最终确定时模拟器就要投入开发和应用,这就意味着模拟器的解码算法是可能随时更改的,并且要求能够迅速完成这个更改并投入使用。人工方法或是半人工方法无法适应这种要求。基于这些问题,模拟器无法实现快速移植,不具有高效性。
技术实现思路
本专利技术的实施例提供一种模拟器的生成方法及装置,用于实现模拟器的快速移植性和高效性。为达到上述目的,本专利技术的实施例采用如下技术方案一种模拟器的生成方法,包括获取指令集配置文件;根据所述指令集配置文件生成解码表和解码算法;所述解码表包括指令码表,指令描述表和位域表;其中,所述指令码表中记录有汇编指令操作码,所述指令描述表记录有每条汇编指令操作码的详细信息,所述位域表记录有计算每一个操作数位域上的数值的方法;根据所述解码表、所述解码算法和模块代码生成模拟器; 所述模块代码是用于模拟汇编指令的动作的代码和解码过程中非解码算法的代码。一种模拟器的生成装置,包括获取单元,用于获取指令集配置文件;解释器,用于根据所述指令集配置文件生成解码表和解码算法;所述解码表包括指令码表,指令描述表和位域表;其中,所述指令码表中记录有汇编指令操作码,所述指令描述表记录有每条汇编指令操作码的详细信息,所述位域表记录有计算每一个操作数位域上的数值的方法;编译器,用于根据所述解码表、所述解码算法和模块代码生成模拟器;所述模块代码是用于模拟汇编指令的动作的代码和解码过程中非解码算法的代码。本专利技术实施例提供了一种模拟器的生成方法及装置,首先获取指令集配置文件, 然后,根据指令集配置文件生成解码表和解码算法,最后,在根据解码表,解码算法和模块代码生成模拟器。这种生成模拟器的方法及装置不需要人工分析,还可以利用查找解码表的方法来定位,保证了模拟器的可移植性和高效性。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种模拟器的生成方法的流程图;图2为图1中生成解码表的流程图;图3为图1中生成解码算法的流程图;图4为本专利技术实施例提供的一种模拟器的生成方法的解码算法解析图;图5为本专利技术实施例提供的一种模拟器的生成方法的解码算法一种流程图;图6为本专利技术实施例提供的一种模拟器的生成方法的解码算法的又一解析图;图7为本专利技术实施例提供的一种模拟器的生成方法的解码算法又一种流程图;图8为本专利技术实施例提供的一种模拟器的生成装置的一种示意图;图9为本专利技术实施例提供的一种模拟器的生成装置的又一种示意图。具体实施例方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例提供了一种模拟器的生成方法,该生成方法各步骤的执行主体为一种模拟器的生成装置,例如,该生成装置可以为计算机等。所述生成方法,如图1所示,包括以下步骤101、获取指令集配置文件;指令集配置文件包括芯片上所有指令集的名字及其位域,所有操作数的类型及其输出方式,以及每一指令的汇编输出格式、操作数类型及编码格式;所述指令包括操作数和操作码。其中,芯片开发人员提供开发芯片所使用的所有指令集,其中,每一指令集为指令的集合。模拟器开发人员根据芯片开发人员提供的指令集完成指令集配置文件的填写,此过程是不需要模拟器开发人员人工分析的;具体的,可以由模拟器开发人员将芯片开发人员提供的指令集复制到一网页中,查看该网页的脚本,并由模拟器开发人员根据网页的脚本按照指令集配置文件的格式填写指令集配置文件。在本专利技术实施例中提供一具体的实例,以说明指令集配置文件的格式。例如,/*所有指令集的名字*/<insn_types>={X64, X64 SE0, X64 SE1, X24, X16}/*各个指令集的位域*/<X64>={0,63}<X64_SE0 >={28, 47}<X64_SE1>={48, 63}<X24>={0, 23}<X16>={0, 15}/*所有操作数的类型*/<opend_types>={reg, vreg, breg, immg, imml6, imm}/*操作数的输出方式*/<reg>={a%i, 0"31}<vreg>={v%i, 0"15}<breg>={b%i, 0"15}<imm8>={ %i, 0"255}<imml6>={ %i, 0"65535}<imm>={%i}{ABS20/*具体指令*/{ABS20 $1, $2}/*指令的汇编输出格式*/{vreg, vreg}/*操作数类型*//*以下是指令ABS20所有可能的编码格式*/{X64 SE0/*指令 ABS20 在指令集 X64_SE0 中 */{00000110********0001****} /* 操作码的编码格式 */ {**__4_3210**__} /*操作数$1的编码格式*/ {**___4**__3210} /*操作数$2的编码格式*/}{X24/*指令ABS20在指令集X24中*/{0110********0001****0000} /* 操作码的编码格式 */ {*本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:叶寒栋赵鹏郑森火曹炯
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1
相关领域技术