CN110175047B - 处理器指令编码的自动生成方法及装置 - Google Patents
处理器指令编码的自动生成方法及装置 Download PDFInfo
- Publication number
- CN110175047B CN110175047B CN201910323866.9A CN201910323866A CN110175047B CN 110175047 B CN110175047 B CN 110175047B CN 201910323866 A CN201910323866 A CN 201910323866A CN 110175047 B CN110175047 B CN 110175047B
- Authority
- CN
- China
- Prior art keywords
- bit
- node
- name
- parent
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例提供一种处理器指令编码的自动生成方法及装置,所述方法包括:从目标处理器指令集的手册中获取所有位编码表,对每张所述位编码表进行预处理,以使得每张经过预处理的位编码表包括表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码;将所有经过预处理的位编码表存储至一个文件中,获得位编码表文件,基于所述位编码表文件构建多叉树;遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码。本发明实施例提供了高效的、通用的、自动的处理器指令编码生成方法,与具体的处理器指令集类型无关,只与位编码表文件有关。
Description
技术领域
本发明涉及处理器技术领域,更具体地,涉及一种处理器指令编码的自动生成方法及装置。
背景技术
对于处理器的设计和验证来说,掌握指令集手册中所定义的所有的指令编码是至关重要的,比如在处理器设计的验证阶段,需要根据所有的指令编码建立完整的指令模板库,以生成高质量的测试用例,提高指令集随机测试的覆盖率。
处理器设计厂商一般只对外公布处理器指令集手册,而不直接提供所有的指令编码。对于如何根据指令集手册生成所有的指令编码,可参考资料较少,一般采用手工生成的方法。处理器指令集可以分为已定义指令集和未定义指令集两部分。对于已定义指令,有些处理器指令集手册直接提供了所有的已定义指令编码,但是需要人手工把这些散落在指令集手册中的已定义指令编码整合起来;另外一些处理器指令集手册则未直接提供所有的已定义指令编码,只提供了数张记录了所有指令编码的表格——MIPS指令集手册将它们称作位编码表(Bit Encoding Table)、Intel指令集手册将它们称作操作码图(Opcode Map),为简洁起见,后文将这些指令编码表格统称为位编码表,根据位编码表可以间接获取所有的已定义指令编码。对于未定义指令,几乎没有指令集手册会直接提供未定义指令编码,但是,所有的未定义指令编码都可以通过位编码表来间接获取。处理器类型不同,位编码表的复杂程度也有所不同。复杂指令集计算机(Complex Instruction Set Computer,CISC)的指令编码格式复杂、指令长度可变、指令编码条数较多,因此位编码表也相对复杂;精简指令集计算机(Reduced Instruction Set Computer,RISC)的指令编码格式规整,指令长度固定、指令编码条数较少,因此位编码表也相对简单。然而,无论是哪种情况,要根据位编码表手工生成所有的已定义和未定义指令编码,不仅繁琐耗时而且容易出错。
总之,关于如何根据指令集手册生成所有的已定义和未定义指令编码,缺乏一种高效的、通用的、自动的生成方法。
发明内容
本发明实施例提供一种处理器指令编码的自动生成方法及装置,用以解决根据指令集手册手工生成所有已定义和未定义指令编码所存在的问题,实现处理器指令编码的自动生成。
第一方面,本发明实施例提供一种处理器指令编码的自动生成方法,包括:
从目标处理器指令集的手册中获取所有位编码表,对每张所述位编码表进行预处理,以使得每张经过预处理的位编码表包括表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码;
将所有经过预处理的位编码表存储至一个文件中,获得位编码表文件,基于所述位编码表文件构建多叉树;
遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码。
第二方面,本发明实施例提供一种处理器指令编码的自动生成装置,包括:
预处理模块,用于从目标处理器指令集的手册中获取所有位编码表,对每张所述位编码表进行预处理,以使得每张经过预处理的位编码表包括表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码;
多叉树构建模块,用于将所有经过预处理的位编码表存储至一个文件中,获得位编码表文件,基于所述位编码表文件构建多叉树;
指令编码获取模块,用于遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的处理器指令编码的自动生成方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的处理器指令编码的自动生成方法的步骤。
本发明实施例提供的处理器指令编码的自动生成方法及装置,首先获取位编码表文件,然后根据位编码表文件,构造一棵多叉树,并通过遍历这棵多叉树,最终得到所有的已定义和未定义指令编码,提供了高效的、通用的、自动的处理器指令编码生成方法,与具体的处理器指令集类型无关,只与位编码表文件有关,避免了只能采用手工的方法生成处理器指令编码。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的处理器指令编码的自动生成方法的流程示意图;
图2为本发明实施例提供的经过预处理后的位编码表的示例图;
图3为本发明实施例提供的所述基于所述位编码表文件构建多叉树的步骤的流程示意图;
图4为本发明实施例所构建的多叉树的结构示意图;
图5为本发明实施例提供的已定义指令编码和未定义指令编码的示例图;
图6为本发明实施例提供的处理器指令编码的自动生成装置的结构示意图;
图7为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的处理器指令编码的自动生成方法的流程示意图,包括:
步骤100、从目标处理器指令集的手册中获取所有位编码表,对每张所述位编码表进行预处理,以使得每张经过预处理的位编码表包括表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码;
可以理解的是,目标处理器指令集是待处理的处理器指令集,本发明实施例的目的是根据目标处理器指令集的手册,自动生成所有已定义的指令编码和未定义的指令编码。
首先从目标处理器指令集的手册中收集所有位编码表,位编码表是指记录了指令编码的表格。值得说明的是,在不同的处理器指令集手册中,记录了指令编码的表格拥有不同的名称,例如,MIPS指令集手册将它们称作位编码表(Bit Encoding Table),Intel指令集手册将它们称作操作码图(Opcode Map),为便于描述,本发明实施例中将这些记录了指令编码的表格统称为位编码表。
然后对所获取的所有位编码表进行预处理,使得每张位编码表均包括以下几项信息:表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码。如图2所示,为本发明实施例提供的经过预处理后的位编码表的示例图,图中包括两张经过预处理后的位编码表。其中,从上至下看图2。第一张经过预处理后的位编码表:ROOT是表名;31是位编码高位,26是位编码低位,说明该表所确定的是第26~31位的指令编码,即位域是26~31;表项数为2(31-26+1)=64,即有64个表项,(NODE,*,root_3,…,root_64)是64个表项名,其中表项名“*”所对应的编码是未定义指令编码;(000000,000001,…,111111)是各个表项名所对应的位编码,比如表项名NODE所对应的位编码是000000,表项名root_3所对应的位编码是000010。第二张经过预处理后的位编码表:NODE是表名;5是位编码高位,0是位编码低位,这说明该表所确定的是第0~5位的指令编码,即位域是0~5;表项数为2(5-0+1)=64,即有64个表项;(node_1,*,node_3,…,node_64)是64个表项名,其中表项名“*”所对应的编码是未定义指令编码;(000000,000001,…,111111)是各个表项名所对应的位编码,比如表项名node_1所对应的位编码是000000,表项名node_3所对应的位编码是000010。
对所获取的位编码表进行预处理,使得每张位编码表均包含表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码,一方面可以使得后续自动生成所有未定义和已定义指令编码变得更加方便,另一方面也使得本发明实施例所提供的指令编码生成方法具有了一定的通用性,不管位编码表的复杂程度如何,只需要将位编码表处理成本发明实施例所需要的格式,都可以根据本发明实施例的后续处理方法进行处理。
步骤200、将所有经过预处理的位编码表存储至一个文件中,获得位编码表文件,基于所述位编码表文件构建多叉树;
具体地,为了便于计算机程序进行处理,将所有经过预处理的位编码表存储在一个文件中,将该文件称为位编码表文件。为了自动生成所有未定义和已定义指令编码,本发明实施例基于所述位编码表文件构建多叉树。多叉树可以清楚地表示位编码表文件中所有位编码表之间的层级关系。
步骤300、遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码。
具体地,对步骤200中所构造的多叉树进行遍历,多叉树通常包括一个根结点、所述根结点的多个子结点,以及各子结点的子结点,将没有子结点的结点称为叶子结点。
获取所述多叉树中所有叶子结点的结点名和指令编码,所有叶子结点的指令编码则包括了所述目标处理器指令集中的所有已定义指令编码和未定义指令编码。
本发明实施例提供的处理器指令编码的自动生成方法,首先获取位编码表文件,然后根据位编码表文件,构造一棵多叉树,并通过遍历这棵多叉树,最终得到所有的已定义和未定义指令编码,提供了高效的、通用的、自动的处理器指令编码生成方法,与具体的处理器指令集类型无关,只与位编码表文件有关,避免了只能采用手工的方法生成处理器指令编码。
如图3所示,为本发明实施例提供的所述基于所述位编码表文件构建多叉树的步骤的流程示意图,包括:
步骤210、根据表名和表项名从所述位编码表文件中获取作为根表的位编码表,利用所述根表为多叉树建立根结点,将所述根表作为父表,将所述根结点作为父结点;
具体地,构建多叉树的第一步是建立根结点。
根表的定义如下:如果某张位编码表的表名没有出现在其他位编码表的表项名中,那么该位编码表就是根表。例如,图2中,表名为ROOT的位编码表是根表。
值得说明的是,对于任意处理器指令集,其所有的位编码表中有且仅有一张是根表。
可以理解的是,所述根据表名和表项名从所述位编码表文件中获取作为根表的位编码表的步骤,具体为:
若判断获知所述位编码表文件中存在某张位编码表的表名没有出现在其他任何位编码表的表项名中,则将该位编码表作为根表。
然后,利用所述根表为多叉树建立根结点,具体为:
将所述根表的表名作为根结点的结点名,并将“XX…X”作为根结点的指令编码,其中,X表示对应位的编码值未确定,所述根结点的指令编码“XX…X”的长度与所述目标处理器指令集中最长指令的长度相等。
X也可以用除0、1以外的其他符号替代。
将所述根表作为父表,将所述根结点作为父结点,然后开始构建所述父结点的子结点。
步骤220、根据所述父表的位编码高位和位编码低位计算所述父表的表项数,为所述父结点建立多个子结点,其中所述子结点的总个数与所述父表的表项数相等,并将所述父表的各个表项名分配给各个子结点作为结点名;
具体地,本步骤为父结点构建子结点。首先要确定父结点包含多少个子结点,根据所述父表的位编码高位和位编码低位采用公式表项数=2(位编码高位-位编码低位+1)计算父表的表项数,表项数为多少就为父结点建立多少个子结点,并将父表的各个表项名分配给这些子结点作为结点名。例如,图2中,父表ROOT的位编码高位为31,位编码低位是26,则父表ROOT的表项数为2(32-26+1)=64,则为父结点ROOT构造64个子结点,如图4所示,为本发明实施例所构建的多叉树的结构示意图,结点ROOT包含64个子节点,NODE是结点ROOT的一个子结点的结点名。
步骤230、根据所述父表的位编码高位和位编码低位确定所述父表的位域,并获取所述父表各个表项名所对应的位编码,利用所述父表各个表项名所对应的位编码替换所述父结点的指令编码中所述位域所在的编码,获得各个子结点的指令编码,然后将所述父表从所述位编码表文件中删除;
具体地,本步骤确定父结点的每个子结点所对应的指令编码。首先,根据父表的位编码高位和位编码低位获取父表的位域,如图2所示,父表ROOT的位域为26~31,再获取父表各个表项名所对应的位编码,父表ROOT的表项名NODE所对应的位编码为000000,利用所述父表各个表项名所对应的位编码替换所述父结点的指令编码中所述位域所在的编码,得到新的指令编码,将这些新的指令编码作为对应的子结点的指令编码。如图4所示,表项名NODE所对应的位编码为000000,将父结点的指令编码“XX…X”中的26~31位用000000进行替换,得到结点NODE的指令编码为“000000XX…X”;
得到各个子结点的指令编码后,将父表从位编码表文件中删除。
步骤240、判断所述位编码表文件是否为空,若不为空,则对各个子结点进行遍历,查找所述位编码表文件中是否存在表名与子结点的结点名相同的位编码表,若存在,则将表名与子结点的结点名相同的位编码表作为下一父表,将所述子结点作为下一父结点。
具体地,将位编码表文件是否为空作为多叉树是否构建完成的判断条件,若位编码表文件为空,则说明多叉树构建完成;若位编码表文件不为空,则继续构建多叉树。通过遍历各个子结点,构建子结点的子结点。需要确定父表对应的子表。
父表与子表:如果某张位编码表中存在某个表项名是另外一张位编码表的表名,那么前者是后者的父表,后者是前者的子表。以图2为例,表名为NODE的位编码表是表名为ROOT的位编码表的子表。那么,将表名与子结点的结点名相同的位编码表NODE作为下一父表,将所述子结点NODE作为下一父结点。如图4所示,子结点NODE包含如下子结点:node_1,*,node_3,…,node_64。
确定了下一父表和下一父结点后,采用步骤220和步骤230继续构建多叉树,直至位编码表文件为空。
本发明实施例提供的处理器指令编码的自动生成方法,给出了基于位编码表文件构造多叉树的具体过程,可高效地实现处理器指令编码的自动生成。
基于上述实施例的内容,所述遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码的步骤,具体为:
对所构造的多叉树进行遍历,获取所述多叉树中所有叶子结点的结点名和指令编码,将结点名和指令编码存储在一个文件中,生成指令编码文件,从所述指令编码文件中获取所述目标处理器指令集的所有已定义指令编码和未定义指令编码。
具体地,对所构造的多叉树进行遍历,获取所述多叉树中所有叶子结点的结点名和指令编码,将结点名和指令编码存储在一个文件中,生成指令编码文件,所述指令编码文件中存储有所述目标处理器指令集的所有已定义指令编码和未定义指令编码,若叶子结点的结点名为“*”,则表明该叶子结点的指令编码是未定义指令编码;若叶子结点的结点名不为“*”,则表明该叶子结点的指令编码是已定义指令编码。如图5所示,为本发明实施例提供的已定义指令编码和未定义指令编码的示例图,假设图4中的root_64、node_1、node_64都是叶子结点,那么,图5中的第2行、第3行、第5行是已定义指令编码,第1行和第4行是未定义指令编码。
如图6所示,为本发明实施例提供的处理器指令编码的自动生成装置的结构示意图,包括:预处理模块610、多叉树构建模块620和指令编码获取模块630,其中,
预处理模块610,用于从目标处理器指令集的手册中获取所有位编码表,对每张所述位编码表进行预处理,以使得每张经过预处理的位编码表包括表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码;
可以理解的是,目标处理器指令集是待处理的处理器指令集,本发明实施例的目的是根据目标处理器指令集的手册,自动生成所有已定义的指令编码和未定义的指令编码。
预处理模块610首先从目标处理器指令集的手册中收集所有位编码表,位编码表是指记录了指令编码的表格。值得说明的是,在不同的处理器指令集手册中,记录了指令编码的表格拥有不同的名称,例如,MIPS指令集手册将它们称作位编码表(Bit EncodingTable),Intel指令集手册将它们称作操作码图(Opcode Map),为便于描述,本发明实施例中将这些记录了指令编码的表格统称为位编码表。
然后预处理模块610对所获取的所有位编码表进行预处理,使得每张位编码表均包括以下几项信息:表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码。对所获取的位编码表进行预处理,使得每张位编码表均包含表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码,一方面可以使得后续自动生成所有未定义和已定义指令编码变得更加方便,另一方面,无论位编码表的复杂程度如何,只需要将位编码表处理成本发明实施例所需要的格式即可最终实现处理指令编码的自动生成。
多叉树构建模块620,用于将所有经过预处理的位编码表存储至一个文件中,获得位编码表文件,基于所述位编码表文件构建多叉树;
具体地,为了便于计算机程序进行处理,多叉树构建模块620将所有经过预处理的位编码表存储在一个文件中,将该文件称为位编码表文件。为了自动生成所有未定义和已定义指令编码,多叉树构建模块620基于所述位编码表文件构建多叉树。多叉树可以清楚地表示位编码表文件中所有位编码表之间的层级关系。
其中,所述多叉树构建模块620具体用于:
根据表名和表项名从所述位编码表文件中获取作为根表的位编码表,利用所述根表为多叉树建立根结点,将所述根表作为父表,将所述根结点作为父结点;
根据所述父表的位编码高位和位编码低位计算所述父表的表项数,为所述父结点建立多个子结点,其中所述子结点的总个数与所述父表的表项数相等,并将所述父表的各个表项名分配给各个子结点作为结点名;
根据所述父表的位编码高位和位编码低位确定所述父表的位域,并获取所述父表各个表项名所对应的位编码,利用所述父表各个表项名所对应的位编码替换所述父结点的指令编码中所述位域所在的编码,获得各个子结点的指令编码,然后将所述父表从所述位编码表文件中删除;
判断所述位编码表文件是否为空,若不为空,则对各个子结点进行遍历,查找所述位编码表文件中是否存在表名与子结点的结点名相同的位编码表,若存在,则将表名与子结点的结点名相同的位编码表作为下一父表,将所述子结点作为下一父结点。
指令编码获取模块630,用于遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码。
具体地,指令编码获取模块630对多叉树构建模块620所构造的多叉树进行遍历,获取所述多叉树中所有叶子结点的结点名和指令编码,所有叶子结点的指令编码则包括了所述目标处理器指令集中的所有已定义指令编码和未定义指令编码。
本发明实施例提供的处理器指令编码的自动生成装置,首先获取位编码表文件,然后根据位编码表文件,构造一棵多叉树,并通过遍历这棵多叉树,最终得到所有的已定义和未定义指令编码,提供了高效的、通用的、自动的处理器指令编码生成方法,与具体的处理器指令集类型无关,只与位编码表文件有关,避免了只能采用手工的方法生成处理器指令编码。
图7为本发明实施例提供的电子设备的结构示意图,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储在存储器730上并可在处理器710上运行的计算机程序,以执行上述各方法实施例所提供的方法,例如包括:从目标处理器指令集的手册中获取所有位编码表,对每张所述位编码表进行预处理,以使得每张经过预处理的位编码表包括表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码;将所有经过预处理的位编码表存储至一个文件中,获得位编码表文件,基于所述位编码表文件构建多叉树;遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例提供的方法,例如包括:从目标处理器指令集的手册中获取所有位编码表,对每张所述位编码表进行预处理,以使得每张经过预处理的位编码表包括表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码;将所有经过预处理的位编码表存储至一个文件中,获得位编码表文件,基于所述位编码表文件构建多叉树;遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种处理器指令编码的自动生成方法,其特征在于,包括:
从目标处理器指令集的手册中获取所有位编码表,对每张所述位编码表进行预处理,以使得每张经过预处理的位编码表包括表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码;
将所有经过预处理的位编码表存储至一个文件中,获得位编码表文件,基于所述位编码表文件构建多叉树;
遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码;
其中,所述基于所述位编码表文件构建多叉树的步骤,具体为:
根据表名和表项名从所述位编码表文件中获取作为根表的位编码表,利用所述根表为多叉树建立根结点,将所述根表作为父表,将所述根结点作为父结点;
根据所述父表的位编码高位和位编码低位计算所述父表的表项数,为所述父结点建立多个子结点,其中所述子结点的总个数与所述父表的表项数相等,并将所述父表的各个表项名分配给各个子结点作为结点名;
根据所述父表的位编码高位和位编码低位确定所述父表的位域,并获取所述父表各个表项名所对应的位编码,利用所述父表各个表项名所对应的位编码替换所述父结点的指令编码中所述位域所在的编码,获得各个子结点的指令编码,然后将所述父表从所述位编码表文件中删除;
判断所述位编码表文件是否为空,若不为空,则对各个子结点进行遍历,查找所述位编码表文件中是否存在表名与子结点的结点名相同的位编码表,若存在,则将表名与子结点的结点名相同的位编码表作为下一父表,将所述子结点作为下一父结点。
2.根据权利要求1所述的处理器指令编码的自动生成方法,其特征在于,所述遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码的步骤,具体为:
对所构造的多叉树进行遍历,获取所述多叉树中所有叶子结点的结点名和指令编码,将结点名和指令编码存储在一个文件中,生成指令编码文件,从所述指令编码文件中获取所述目标处理器指令集的所有已定义指令编码和未定义指令编码。
3.根据权利要求1所述的处理器指令编码的自动生成方法,其特征在于,所述根据表名和表项名从所述位编码表文件中获取作为根表的位编码表的步骤,具体为:
若判断获知所述位编码表文件中存在某张位编码表的表名没有出现在其他任何位编码表的表项名中,则将该位编码表作为根表。
4.根据权利要求1所述的处理器指令编码的自动生成方法,其特征在于,利用所述根表为多叉树建立根结点的步骤,具体为:
将所述根表的表名作为根结点的结点名,并将“XX…X”作为根结点的指令编码,其中,X表示对应位的编码值未确定,所述根结点的指令编码的长度与所述目标处理器指令集中最长指令的长度相等。
5.根据权利要求1所述的处理器指令编码的自动生成方法,其特征在于,根据所述父表的位编码高位和位编码低位计算所述父表的表项数的步骤,具体为:
采用公式表项数=2(位编码高位-位编码低位+1)计算所述父表的表项数。
6.根据权利要求1所述的处理器指令编码的自动生成方法,其特征在于,判断所述位编码表文件是否为空的步骤之后,还包括:
若获知所述位编码表文件为空,则所述多叉树构建完成。
7.一种处理器指令编码的自动生成装置,其特征在于,包括:
预处理模块,用于从目标处理器指令集的手册中获取所有位编码表,对每张所述位编码表进行预处理,以使得每张经过预处理的位编码表包括表名、位编码高位、位编码低位、表项名以及所述表项名所对应的位编码;
多叉树构建模块,用于将所有经过预处理的位编码表存储至一个文件中,获得位编码表文件,基于所述位编码表文件构建多叉树;
指令编码获取模块,用于遍历所述多叉树,获取所述处理器指令集手册中所有已定义指令编码和未定义指令编码;
其中,所述基于所述位编码表文件构建多叉树,具体为:
根据表名和表项名从所述位编码表文件中获取作为根表的位编码表,利用所述根表为多叉树建立根结点,将所述根表作为父表,将所述根结点作为父结点;
根据所述父表的位编码高位和位编码低位计算所述父表的表项数,为所述父结点建立多个子结点,其中所述子结点的总个数与所述父表的表项数相等,并将所述父表的各个表项名分配给各个子结点作为结点名;
根据所述父表的位编码高位和位编码低位确定所述父表的位域,并获取所述父表各个表项名所对应的位编码,利用所述父表各个表项名所对应的位编码替换所述父结点的指令编码中所述位域所在的编码,获得各个子结点的指令编码,然后将所述父表从所述位编码表文件中删除;
判断所述位编码表文件是否为空,若不为空,则对各个子结点进行遍历,查找所述位编码表文件中是否存在表名与子结点的结点名相同的位编码表,若存在,则将表名与子结点的结点名相同的位编码表作为下一父表,将所述子结点作为下一父结点。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述处理器指令编码的自动生成方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述处理器指令编码的自动生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910323866.9A CN110175047B (zh) | 2019-04-22 | 2019-04-22 | 处理器指令编码的自动生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910323866.9A CN110175047B (zh) | 2019-04-22 | 2019-04-22 | 处理器指令编码的自动生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110175047A CN110175047A (zh) | 2019-08-27 |
CN110175047B true CN110175047B (zh) | 2022-03-29 |
Family
ID=67689846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910323866.9A Active CN110175047B (zh) | 2019-04-22 | 2019-04-22 | 处理器指令编码的自动生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110175047B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688304B (zh) * | 2019-08-30 | 2021-04-27 | 中国科学院信息工程研究所 | 处理器指令集的完备性检测方法、装置与电子设备 |
CN111130558A (zh) * | 2019-12-31 | 2020-05-08 | 世纪恒通科技股份有限公司 | 一种基于统计概率的编码表压缩方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110024996A (ko) * | 2009-09-03 | 2011-03-09 | 한국전자통신연구원 | 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법 |
CN106464891A (zh) * | 2014-03-17 | 2017-02-22 | 诺基亚技术有限公司 | 用于视频编码和解码的方法和装置 |
CN109067704A (zh) * | 2018-06-28 | 2018-12-21 | 中国空间技术研究院 | 一种卫星遥控指令格式设计与编码管理系统及方法 |
CN109582305A (zh) * | 2017-09-29 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 用于移动应用页面元素的编码方法、装置及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6938050B2 (en) * | 2002-04-23 | 2005-08-30 | International Business Machines Corporation | Content management system and methodology employing a tree-based table hierarchy which accomodates opening a dynamically variable number of cursors therefor |
AU2016235087A1 (en) * | 2015-03-24 | 2017-09-21 | Kyndi, Inc. | Cognitive memory graph indexing, storage and retrieval |
-
2019
- 2019-04-22 CN CN201910323866.9A patent/CN110175047B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110024996A (ko) * | 2009-09-03 | 2011-03-09 | 한국전자통신연구원 | 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법 |
CN106464891A (zh) * | 2014-03-17 | 2017-02-22 | 诺基亚技术有限公司 | 用于视频编码和解码的方法和装置 |
CN109582305A (zh) * | 2017-09-29 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 用于移动应用页面元素的编码方法、装置及电子设备 |
CN109067704A (zh) * | 2018-06-28 | 2018-12-21 | 中国空间技术研究院 | 一种卫星遥控指令格式设计与编码管理系统及方法 |
Non-Patent Citations (2)
Title |
---|
An Automated Approach to Weed Out Prosopis Juliflora(Karuvelam) Trees;M. Devadharshini;《2018 International Conference on Communication, Computing and Internet of Things (IC3IoT)》;20190318;359-362 * |
基于VS2010的PLC程序编辑系统的研究与设计;陆伟男;《中国优秀硕士学位论文全文数据库信息科技辑》;20160815(第8期);I138-103 * |
Also Published As
Publication number | Publication date |
---|---|
CN110175047A (zh) | 2019-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2192497A1 (en) | Apparatus and method for comparing computer documents using tree structures | |
EP2600258A2 (en) | Systems and methods for extraction of concepts for reuse-based schema matching | |
CN110175047B (zh) | 处理器指令编码的自动生成方法及装置 | |
CN107329765B (zh) | 程序文件处理方法及装置 | |
CN116137077B (zh) | 电子元器件库的建立方法、装置、电子设备及存储介质 | |
US20210365599A1 (en) | Intelligent design platform using digital assistants for design process support | |
CN110489131B (zh) | 一种灰度用户选取方法及装置 | |
CN110955712A (zh) | 基于多数据源的开发api处理方法及装置 | |
CN116414878A (zh) | 基于知识图谱的数据查询方法、系统、设备及存储介质 | |
CN111273903B (zh) | 网页制作方法、装置、计算机设备及计算机存储介质 | |
CN117473037A (zh) | 基于大语言模型的考试题库构建方法、系统和电子设备 | |
CN112308857A (zh) | 一种血管中心线的确定方法、装置及可读存储介质 | |
CN115982177B (zh) | 一种基于树形维度的数据归集的方法、装置、设备及介质 | |
CN114995719B (zh) | 列表渲染方法、装置、设备以及存储介质 | |
CN114168119B (zh) | 代码文件编辑方法、装置、电子设备以及存储介质 | |
CN112596703B (zh) | 需求向开发传承的实现方法、系统及存储介质 | |
CN112528613B (zh) | 一种数据表生成方法及其相关设备 | |
CN115237783A (zh) | 一种测试数据生成方法及装置 | |
Keppler et al. | Goetheshaker-developing a rating score for automated evaluation of cocktail recipes | |
CN112365243A (zh) | 一种科目创建方法、装置及计算机设备 | |
CN113536762A (zh) | Json文本的比对方法及装置 | |
CN113128184A (zh) | 针对多人协同编辑文档的文档内容筛选方法及装置 | |
CN110569065B (zh) | 基于域填充的处理器指令编码自动生成方法及装置 | |
CN114254207B (zh) | 企业同名高管识别方法、装置、电子设备及存储介质 | |
CN114116877B (zh) | 一种数据转换的方法、装置、计算机设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |