CN110569065A - 基于域填充的处理器指令编码自动生成方法及装置 - Google Patents
基于域填充的处理器指令编码自动生成方法及装置 Download PDFInfo
- Publication number
- CN110569065A CN110569065A CN201910670455.7A CN201910670455A CN110569065A CN 110569065 A CN110569065 A CN 110569065A CN 201910670455 A CN201910670455 A CN 201910670455A CN 110569065 A CN110569065 A CN 110569065A
- Authority
- CN
- China
- Prior art keywords
- decoding
- preprocessed
- code
- instruction
- graph
- 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.)
- Granted
Links
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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30156—Special purpose encoding of instructions, e.g. Gray coding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例提供一种基于域填充的处理器指令编码自动生成方法及装置,所述方法包括:获取目标处理器指令集手册中所有的译码图‑译码表对,对所有的译码图‑译码表对进行预处理,将所有经过预处理的译码图‑译码表对存储至一个文件中,获得预处理文件;对预处理文件中的任一译码图‑译码表对,根据该译码图‑译码表对中包含的信息进行固定域和变化域的填充,生成该译码图‑译码表对的所有已定义和未定义指令编码,将该译码图‑译码表对从预处理文件中删除,并判断预处理文件是否为空,若预处理文件不为空,则对预处理文件中的下一译码图‑译码表对执行所有已定义和未定义指令编码的生成操作。本发明实施例能够高效、自动地生成处理器指令编码。
Description
技术领域
本发明涉及处理器技术领域,更具体地,涉及一种基于域填充的处理器指令编码自动生成方法及装置。
背景技术
对于处理器的设计和验证来说,掌握指令集手册中所有的指令编码是非常关键的,比如在处理器设计的验证阶段,需要根据所有的指令编码建立完整的指令模板库,以生成高质量的指令集测试用例,从而验证处理器功能是否与设计目标一致。
处理器指令编码可以分为已定义指令编码和未定义指令编码两部分,已定义指令编码指的是指令集手册中规定的具有特定功能的指令编码,比如常见的算术运算指令编码;未定义指令编码指的是指令集手册中规定的没有特定功能的指令编码,即整个指令编码中除已定义指令编码外的那部分指令编码。对于已定义指令编码,指令集手册一般会枚举所有的已定义指令编码,然而想要手工从指令集手册中去收集这些已定义指令编码不仅繁琐复杂而且容易出错,比如ARM指令集手册中的A64指令集一共定义了104条系统指令编码(C5章)、324条基本指令编码(C6章)、383条高级SIMD和浮点指令编码(C7章),这些已定义指令编码散布在三个章节,手册用了近2000页的篇幅去描述它们。对于未定义指令编码,指令集手册一般不会直接提供。为了方便检索,一些指令集手册还定义了译码图(DecodeDiagram)和译码表(Decode Table),一张译码图和一张译码表对应,组成一个译码图-译码表对,所有的已定义和未定义指令编码都可以通过这些译码图-译码表对获得,比如ARM指令集手册中的A64指令集一共定义了不到100个译码图-译码表对,它们涵盖了A64指令集所有的已定义和未定义指令编码,手册仅用了100多页的篇幅去描述它们。然而,想要手工根据译码图-译码表对来获得所有的已定义和未定义指令编码,依旧繁琐复杂而且容易出错。
总之,关于如何根据指令集手册生成所有的已定义和未定义指令编码,缺乏一种高效的、自动的生成方法。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的基于域填充的处理器指令编码自动生成方法及装置。
第一方面,本发明实施例提供一种基于域填充的处理器指令编码自动生成方法,包括:
获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对,将所述所有经过预处理的译码图-译码表对存储至一个文件中,获得预处理文件;
对所述预处理文件中的任一经过预处理的译码图-译码表对,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码,将所述经过预处理的译码图-译码表对从所述预处理文件中删除,并判断所述预处理文件是否为空,若所述预处理文件为空,则获知所述预处理文件中的所有经过预处理的译码图-译码表对均已完成了所有已定义和未定义指令编码的生成操作,否则,对所述预处理文件中的下一经过预处理的译码图-译码表对执行所有已定义和未定义指令编码的生成操作。
第二方面,本发明实施例提供一种基于域填充的处理器指令编码自动生成装置,包括:
预处理模块,用于获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对,将所述所有经过预处理的译码图-译码表对存储至一个文件中,获得预处理文件;
生成模块,用于对所述预处理文件中的任一经过预处理的译码图-译码表对,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码,将所述经过预处理的译码图-译码表对从所述预处理文件中删除,并判断所述预处理文件是否为空,若所述预处理文件为空,则获知所述预处理文件中的所有经过预处理的译码图-译码表对均已完成了所有已定义和未定义指令编码的生成操作,否则,对所述预处理文件中的下一经过预处理的译码图-译码表对执行所有已定义和未定义指令编码的生成操作。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的基于域填充的处理器指令编码自动生成方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的基于域填充的处理器指令编码自动生成方法的步骤。
本发明实施例提供的基于域填充的处理器指令编码自动生成方法及装置,通过将处理器指令集手册中定义的所有译码图-译码表对进行预处理成方便处理的格式,得到一个预处理文件,然后根据预处理后的译码图-译码表对中包含的信息对指令编码的固定域和变化域进行填充,得到所有的已定义和未定义指令编码,能够高效、自动地生成处理器指令编码。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于域填充的处理器指令编码自动生成方法的流程示意图;
图2为ARM处理器指令集手册中Move wide指令类的译码图-译码表对示例图;
图3为本发明实施例提供的ARM处理器指令集手册中Move wide指令类的经过预处理的译码图-译码表对示例图;
图4为本发明实施例提供的根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码的步骤的流程示意图;
图5为采用本发明实施例的方法所生成的ARM处理器指令集手册中Move wide指令类的所有已定义和未定义指令编码的示例图;
图6为本发明实施例提供的基于域填充的处理器指令编码自动生成装置的结构示意图;
图7为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的基于域填充的处理器指令编码自动生成方法的流程示意图,包括:
步骤100、获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对;
本发明实施例中将指令编码中由一个编码高位和一个编码低位所确定的编码区域称作位域,每个位域可以表示成“高位..低位”的形式。
本发明实施例中将最终生成的已定义和未定义指令编码,称作生成指令编码。
处理器指令集手册中定义了数张译码图,每张译码图表示了一类指令的指令编码,译码图规定了这类指令的指令编码被分割成多少个位域、各个位域的名称。
处理器指令集手册中定义了数张译码表,每张译码表和一张译码图一一对应,组成一个译码图-译码表对,译码表规定了该译码图-译码表对能够生成的生成指令编码数目、每条生成指令编码名,还规定了每条生成指令编码中能够由译码表确定的位域、以及这些位域所对应的编码。
图2为ARM处理器指令集手册中Move wide指令类的译码图-译码表对示例图。
如图2中上半部分是一张译码图,它规定了Move wide(immediate)指令类的指令编码被分割成了6个位域,即31..31、30..29、28..23、22..21、20..5、4..0,各个位域的名称分别为sf、opc、无、hw、imm16、Rd。
如图2中下半部分是一张译码表,它与图2中上面那副译码图一一对应,这张译码表规定了Move wide(immediate)指令类的译码图-译码表对能够生成8条生成指令编码,每条生成指令编码名分别为Unallocated、Unallocated、MOVN-32-bit variant、MOVZ-32-bitvariant、MOVK-32-bit variant、MOVN-64-bit variant、MOVZ-64-bit variant、MOVK-64-bit variant。其中,两条生成指令编码Unallocated、Unallocated是未定义指令编码,其余6条为已定义指令编码。每条生成指令编码中能够由译码表进一步确定的位域为sf、opc、hw,即31..31、30..29、22..21,译码表还规定了每条生成指令编码中这些位域所对应的编码,如MOVN-32-bit variant这条生成指令编码中这些位域所对应的编码分别为0、00、xx,表中的“-”表示编码值未确定,本发明实施例使用“x”表示不确定位。
译码图将表示一类指令的指令编码分割成若干个位域,本发明实施例将这些位域分为固定域、变化域、无关域三类:固定域指的是指令编码中由译码图就能够确定编码的位域,即译码图中名称为“无”的位域,如图2中的译码图包含1个固定域28..23,该固定域编码由译码图确定,为100101;变化域指的是指令编码中由译码图不能确定编码的位域,这些位域的编码由译码表进一步确定,如图2中的译码表包含3个变化域,名称分别为sf、opc、hw,MOVN-32-bit variant这条生成指令编码的变化域所对应的编码分别为0、00、xx;无关域指的是指令编码中除了固定域、变化域以外的那些位域,这些位域的编码始终不确定也无需确定,如图2中的译码图包含2个无关域,名称分别为imm16、Rd,对应的编码分别记为xxxxxxxxxxxxxxxx、xxxxx。
本发明实施例首先获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对;
值得说明的是,所述经过预处理的译码图-译码表对包括以下信息:译码图-译码表对的名称、生成指令编码的总数、每条生成指令编码的名称、各个固定域、各个固定域编码、各个变化域以及每条生成指令编码对应的各个变化域编码。
每个译码图-译码表对都表示了一类指令的指令编码,本发明实施例将这类指令编码的名称作为译码图-译码表对的名称。如图2中的译码图-译码表对的名称为Move wide(immediate)。
通过观察译码表,可以获得一个译码图-译码表对能够得到的生成指令编码的总数。如图2所示的译码图-译码表对能够得到8条生成指令编码。
从译码图-译码表对中可以获得每条生成指令编码的名称,如图2所示的译码图-译码表能够得到的生成指令编码分别为Unallocated、Unallocated、MOVN-32-bitvariant、MOVZ-32-bit variant、MOVK-32-bit variant、MOVN-64-bit variant、MOVZ-64-bit variant、MOVK-64-bit variant。
从译码图可以获得各个固定域,以及各个固定域编码,从译码表中可以获得各个变化域,以及每条生成指令编码对应的各个变化域的编码。例如,图2中的译码图包含1个固定域28..23;固定域编码为100101。图2中的各个变化域为31..31、30..29、22..21,MOVN-32-bit variant这条生成指令编码对应的各个变化域编码分别为0、00、xx。
图3为本发明实施例提供的ARM处理器指令集手册中Move wide指令类的经过预处理的译码图-译码表对示例图。图3中第1行记录了译码图-译码对名称为Move wide(Immediate);图3中第2行记录了固定域数目为1;图3中第3行记录了变化域数目为3;图3中第4行记录了固定域28..23的编码为100101;图3中第5行记录了变化域分别为31..31、30..29、22..21,它们的名称分别为sf、opc、hw;图3中第6行记录了生成指令编码数目为8;图3中第7至14行记录了每条生成指令编码对应的各个变化域编码和每条生成指令编码名。
然后,将所述所有经过预处理的译码图-译码表对存储至一个文件中,获得预处理文件。
步骤200、对所述预处理文件中的任一经过预处理的译码图-译码表对,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码,将所述经过预处理的译码图-译码表对从所述预处理文件中删除,并判断所述预处理文件是否为空,若所述预处理文件为空,则获知所述预处理文件中的所有经过预处理的译码图-译码表对均已完成了所有已定义和未定义指令编码的生成操作,否则,对所述预处理文件中的下一经过预处理的译码图-译码表对执行所有已定义和未定义指令编码的生成操作。
具体地,本发明实施例将指令编码划分成固定域、变化域和无关域,然后根据经过预处理的译码图和译码表对中所包含的信息对固定域和变化域进行填充,从而最终获得所有的已定义和未定义指令编码。
从预处理文件中取出一个译码图-译码表对,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码的步骤,如图4所示,包括:
步骤210,根据所述目标处理器指令集的指令长度对指令编码进行初始化;
具体地,将指令编码初始化为“xx…x”,本发明实施例使用“x”符号表示对应位的编码值未确定,“xx…x”的长度与指令集的指令长度相等。
步骤220、从所述经过预处理的译码图-译码表对中取出各个固定域和各个固定域编码,将初始化后的指令编码中所述各个固定域所在的编码替换为相应的所述经过预处理的译码图-译码表对中的固定域编码,获得新的指令编码;
具体地,从该译码图-译码表对中取出各个固定域、各个固定域编码,将步骤210得到的指令编码中各个固定域所在的编码替换为相应的所述经过预处理的译码图-译码表对中的固定域编码,得到新的指令编码。
步骤230、从所述经过预处理的译码图-译码表对中取出一条生成指令编码的名称、各个变化域和所取出的生成指令编码对应的各个变化域编码,将所述新的指令编码中所述各个变化域所在的编码替换为所述经过预处理的译码图-译码表对中该生成指令编码对应的各个变化域编码,获得一条生成指令编码,并使当前得到的生成指令编码数目加一;
具体地,从该译码图-译码表对中取出一条生成指令编码名及其对应的各个变化域编码、各个变化域,将步骤220中得到的新的指令编码中各个变化域所在的编码替换为所述经过预处理的译码图-译码表对中该生成指令编码对应的各个变化域编码,得到一条生成指令编码,并使该译码图-译码表对当前得到的生成指令编码数目增加1条。
步骤240、判断当前得到的生成指令编码数目是否等于所述经过预处理的译码图-译码表对中的生成指令编码的总数,若相等,则获知所述经过预处理的译码图-译码表对已经生成了所有的已定义和未定义指令编码,否则,对所述经过预处理的译码图-译码表对执行下一生成指令编码的生成操作。
具体地,获取该译码图-译码表对中的生成指令编码的总数,判断步骤230中译码图-译码表对当前得到的生成指令编码数目是否与该译码图-译码表对中的生成指令编码的总数相等,若相等,则表示该译码图-译码表对已经生成了所有的生成指令编码;若不相等,进入步骤230,从该译码图-译码表对中取出下一条生成指令编码名及其对应的各个变化域编码、各个变化域。
每当一个译码图-译码表对所有的生成指令编码生成完毕,将该译码图-译码表对从预处理文件中删除,并判断预处理文件是否为空,若不为空,则从预处理文件中取出下一个译码图-译码表对,生成这个译码图-译码表对能够生成的所有的生成指令编码;否则,预处理文件为空,表示预处理文件中所有的译码图-译码表对都已经生成了所有的生成指令编码,结束流程。
在本发明另一实施例中,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码的步骤,具体为:
根据所述目标处理器指令集的指令长度对指令编码进行初始化;
从所述经过预处理的译码图-译码表对中取出任一条生成指令编码的名称,以及各个变化域和所取出的生成指令编码对应的各个变化域编码,将初始化后的指令编码中所述各个变化域所在的编码替换为所述经过预处理的译码图-译码表对中该生成指令编码对应的各个变化域编码,获得新的指令编码;
从所述经过预处理的译码图-译码表对中获取各个固定域和各个固定域编码,将所述新的指令编码中所述各个固定域所在的编码替换为相应的所述经过预处理的译码图-译码表对中的固定域编码,获得一条生成指令编码,并使当前得到的生成指令编码数目加一;
判断当前得到的生成指令编码数目是否等于所述经过预处理的译码图-译码表对中的生成指令编码的总数,若相等,则获知所述经过预处理的译码图-译码表对已经生成了所有的已定义和未定义指令编码,否则,对所述经过预处理的译码图-译码表对执行下一生成指令编码的生成操作。
即先进行变化域的填充,然后再进行固定域的填充。
如图5所示,为采用本发明实施例的方法所生成的ARM处理器指令集手册中Movewide指令类的所有已定义和未定义指令编码的示例图。
本发明实施例提出的基于域填充的处理器指令编码自动生成方法,通过将处理器指令集手册中定义的所有的译码图-译码表对预处理成方便处理的格式,得到一个预处理文件,然后将指令编码分割成固定域、变化域、无关域,再根据经过预处理的译码图和译码表对中包含的信息对固定域和变化域进行填充,最终得到所有的已定义和未定义指令编码,本发明实施例可以高效地、自动地进行处理器指令编码的生成,避免了只能采用手工的方法生成处理器指令编码。
如图6所示,为本发明实施例提供的基于域填充的处理器指令编码自动生成装置的结构示意图,包括:预处理模块601和生成模块602,其中,
预处理模块601,用于获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对,将所述所有经过预处理的译码图-译码表对存储至一个文件中,获得预处理文件;
具体地,预处理模块601首先获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对;
值得说明的是,所述经过预处理的译码图-译码表对包括以下信息:译码图-译码表对的名称、生成指令编码的总数、每条生成指令编码的名称、各个固定域、各个固定域编码、各个变化域以及每条生成指令编码对应的各个变化域编码。
每个译码图-译码表对都表示了一类指令的指令编码,本发明实施例将这类指令编码的名称作为译码图-译码表对的名称。通过观察译码表,可以获得一个译码图-译码表对能够得到的生成指令编码的总数。从译码图-译码表对中可以获得每条生成指令编码的名称。从译码图可以获得各个固定域,以及各个固定域编码,从译码表中可以获得各个变化域,以及每条生成指令编码对应的各个变化域的编码。
然后,预处理模块601将所有经过预处理的译码图-译码表对存储至一个文件中,获得预处理文件。
生成模块602,用于对所述预处理文件中的任一经过预处理的译码图-译码表对,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码,将所述经过预处理的译码图-译码表对从所述预处理文件中删除,并判断所述预处理文件是否为空,若所述预处理文件为空,则获知所述预处理文件中的所有经过预处理的译码图-译码表对均已完成了所有已定义和未定义指令编码的生成操作,否则对所述预处理文件中的下一经过预处理的译码图-译码表对执行所有已定义和未定义指令编码的生成操作。
具体地,本发明实施例将指令编码划分成固定域、变化域和无关域,生成模块602根据经过预处理的译码图和译码表对中所包含的信息对固定域和变化域进行填充,从而最终获得所有的已定义和未定义指令编码。
其中,所述生成模块具体用于:
根据所述目标处理器指令集的指令长度对指令编码进行初始化;
具体地,将指令编码初始化为“xx…x”,本发明实施例使用“x”符号表示对应位的编码值未确定,“xx…x”的长度与指令集的指令长度相等。
从所述经过预处理的译码图-译码表对中取出各个固定域和各个固定域编码,将初始化后的指令编码中所述各个固定域所在的编码替换为相应的所述经过预处理的译码图-译码表对中的固定域编码,获得新的指令编码;
从所述经过预处理的译码图-译码表对中取出一条生成指令编码的名称、各个变化域和所取出的生成指令编码对应的各个变化域编码,将所述新的指令编码中所述各个变化域所在的编码替换为所述经过预处理的译码图-译码表对中该生成指令编码对应的各个变化域编码,获得一条生成指令编码,并使当前得到的生成指令编码数目加一;
判断当前得到的生成指令编码数目是否等于所述经过预处理的译码图-译码表对中的生成指令编码的总数,若相等,则获知所述经过预处理的译码图-译码表对已经生成了所有的已定义和未定义指令编码,否则,对所述经过预处理的译码图-译码表对执行下一生成指令编码的生成操作。
在另一实施例中,所述生成模块具体用于:
根据所述目标处理器指令集的指令长度对指令编码进行初始化;
从所述经过预处理的译码图-译码表对中取出任一条生成指令编码的名称,以及各个变化域和所取出的生成指令编码对应的各个变化域编码,将初始化后的指令编码中所述各个变化域所在的编码替换为所述经过预处理的译码图-译码表对中该生成指令编码对应的各个变化域编码,获得新的指令编码;
从所述经过预处理的译码图-译码表对中获取各个固定域和各个固定域编码,将所述新的指令编码中所述各个固定域所在的编码替换为相应的所述经过预处理的译码图-译码表对中的固定域编码,获得一条生成指令编码,并使当前得到的生成指令编码数目加一;
判断当前得到的生成指令编码数目是否等于所述经过预处理的译码图-译码表对中的生成指令编码的总数,若相等,则获知所述经过预处理的译码图-译码表对已经生成了所有的已定义和未定义指令编码,否则,对所述经过预处理的译码图-译码表对执行下一生成指令编码的生成操作。
每当一个译码图-译码表对所有的生成指令编码生成完毕,生成模块602将该译码图-译码表对从预处理文件中删除,并判断预处理文件是否为空,若不为空,则生成模块602从预处理文件中取出下一个译码图-译码表对,生成这个译码图-译码表对能够生成的所有的生成指令编码;否则,预处理文件为空,表示预处理文件中所有的译码图-译码表对都已经生成了所有的生成指令编码,结束流程。
本发明实施例提出的基于域填充的处理器指令编码自动生成装置,通过将处理器指令集手册中定义的所有的译码图-译码表对预处理成方便处理的格式,得到一个预处理文件,然后将指令编码分割成固定域、变化域、无关域,再根据经过预处理的译码图和译码表对中包含的信息对固定域和变化域进行填充,最终得到所有的已定义和未定义指令编码,本发明实施例可以高效地、自动地进行处理器指令编码的生成,避免了只能采用手工的方法生成处理器指令编码。
图7为本发明实施例提供的电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线(Communications Bus)740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储在存储器730上并可在处理器710上运行的计算机程序,以执行上述各方法实施例所提供的基于域填充的处理器指令编码自动生成方法,例如包括:获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对,将所述所有经过预处理的译码图-译码表对存储至一个文件中,获得预处理文件;对所述预处理文件中的任一经过预处理的译码图-译码表对,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码,将所述经过预处理的译码图-译码表对从所述预处理文件中删除,并判断所述预处理文件是否为空,若所述预处理文件为空,则获知所述预处理文件中的所有经过预处理的译码图-译码表对均已完成了所有已定义和未定义指令编码的生成操作,否则,对所述预处理文件中的下一经过预处理的译码图-译码表对执行所有已定义和未定义指令编码的生成操作。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例提供的基于域填充的处理器指令编码自动生成方法,例如包括:获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对,将所述所有经过预处理的译码图-译码表对存储至一个文件中,获得预处理文件;对所述预处理文件中的任一经过预处理的译码图-译码表对,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码,将所述经过预处理的译码图-译码表对从所述预处理文件中删除,并判断所述预处理文件是否为空,若所述预处理文件为空,则获知所述预处理文件中的所有经过预处理的译码图-译码表对均已完成了所有已定义和未定义指令编码的生成操作,否则,对所述预处理文件中的下一经过预处理的译码图-译码表对执行所有已定义和未定义指令编码的生成操作。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于域填充的处理器指令编码自动生成方法,其特征在于,包括:
获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对,将所述所有经过预处理的译码图-译码表对存储至一个文件中,获得预处理文件;
对所述预处理文件中的任一经过预处理的译码图-译码表对,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码,将所述经过预处理的译码图-译码表对从所述预处理文件中删除,并判断所述预处理文件是否为空,若所述预处理文件为空,则获知所述预处理文件中的所有经过预处理的译码图-译码表对均已完成了所有已定义和未定义指令编码的生成操作,否则,对所述预处理文件中的下一经过预处理的译码图-译码表对执行所有已定义和未定义指令编码的生成操作。
2.根据权利要求1所述的基于域填充的处理器指令编码自动生成方法,其特征在于,所述经过预处理的译码图-译码表对包括以下信息:译码图-译码表对的名称、生成指令编码的总数、每条生成指令编码的名称、各个固定域、各个固定域编码、各个变化域以及每条生成指令编码对应的各个变化域编码。
3.根据权利要求2所述的基于域填充的处理器指令编码自动生成方法,其特征在于,所述根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码的步骤,具体为:
根据所述目标处理器指令集的指令长度对指令编码进行初始化;
从所述经过预处理的译码图-译码表对中取出各个固定域和各个固定域编码,将初始化后的指令编码中所述各个固定域所在的编码替换为相应的所述经过预处理的译码图-译码表对中的固定域编码,获得新的指令编码;
从所述经过预处理的译码图-译码表对中取出一条生成指令编码的名称、各个变化域和所取出的生成指令编码对应的各个变化域编码,将所述新的指令编码中所述各个变化域所在的编码替换为所述经过预处理的译码图-译码表对中该生成指令编码对应的各个变化域编码,获得一条生成指令编码,并使当前得到的生成指令编码数目加一;
判断当前得到的生成指令编码数目是否等于所述经过预处理的译码图-译码表对中的生成指令编码的总数,若相等,则获知所述经过预处理的译码图-译码表对已经生成了所有的已定义和未定义指令编码,否则,对所述经过预处理的译码图-译码表对执行下一生成指令编码的生成操作。
4.根据权利要求2所述的基于域填充的处理器指令编码自动生成方法,其特征在于,所述根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码的步骤,具体为:
根据所述目标处理器指令集的指令长度对指令编码进行初始化;
从所述经过预处理的译码图-译码表对中取出任一条生成指令编码的名称,以及各个变化域和所取出的生成指令编码对应的各个变化域编码,将初始化后的指令编码中所述各个变化域所在的编码替换为所述经过预处理的译码图-译码表对中该生成指令编码对应的各个变化域编码,获得新的指令编码;
从所述经过预处理的译码图-译码表对中获取各个固定域和各个固定域编码,将所述新的指令编码中所述各个固定域所在的编码替换为相应的所述经过预处理的译码图-译码表对中的固定域编码,获得一条生成指令编码,并使当前得到的生成指令编码数目加一;
判断当前得到的生成指令编码数目是否等于所述经过预处理的译码图-译码表对中的生成指令编码的总数,若相等,则获知所述经过预处理的译码图-译码表对已经生成了所有的已定义和未定义指令编码,否则,对所述经过预处理的译码图-译码表对执行下一生成指令编码的生成操作。
5.一种基于域填充的处理器指令编码自动生成装置,其特征在于,包括:
预处理模块,用于获取目标处理器指令集手册中所有的译码图-译码表对,对所述处理器指令集手册中所有的译码图-译码表对进行预处理,获得所有经过预处理的译码图-译码表对,将所述所有经过预处理的译码图-译码表对存储至一个文件中,获得预处理文件;
生成模块,用于对所述预处理文件中的任一经过预处理的译码图-译码表对,根据所述经过预处理的译码图-译码表对中包含的信息进行固定域和变化域的填充,生成所述经过预处理的译码图-译码表对所对应的所有已定义和未定义指令编码,将所述经过预处理的译码图-译码表对从所述预处理文件中删除,并判断所述预处理文件是否为空,若所述预处理文件为空,则获知所述预处理文件中的所有经过预处理的译码图-译码表对均已完成了所有已定义和未定义指令编码的生成操作,否则,对所述预处理文件中的下一经过预处理的译码图-译码表对执行所有已定义和未定义指令编码的生成操作。
6.根据权利要求5所述的基于域填充的处理器指令编码自动生成装置,其特征在于,所述经过预处理的译码图-译码表对包括以下信息:译码图-译码表对的名称、生成指令编码的总数、每条生成指令编码的名称、各个固定域、各个固定域编码、各个变化域以及每条生成指令编码对应的各个变化域编码。
7.根据权利要求6所述的基于域填充的处理器指令编码自动生成装置,其特征在于,所述生成模块具体用于:
根据所述目标处理器指令集的指令长度对指令编码进行初始化;
从所述经过预处理的译码图-译码表对中取出各个固定域和各个固定域编码,将初始化后的指令编码中所述各个固定域所在的编码替换为相应的所述经过预处理的译码图-译码表对中的固定域编码,获得新的指令编码;
从所述经过预处理的译码图-译码表对中取出一条生成指令编码的名称、各个变化域和所取出的生成指令编码对应的各个变化域编码,将所述新的指令编码中所述各个变化域所在的编码替换为所述经过预处理的译码图-译码表对中该生成指令编码对应的各个变化域编码,获得一条生成指令编码,并使当前得到的生成指令编码数目加一;
判断当前得到的生成指令编码数目是否等于所述经过预处理的译码图-译码表对中的生成指令编码的总数,若相等,则获知所述经过预处理的译码图-译码表对已经生成了所有的已定义和未定义指令编码,否则,对所述经过预处理的译码图-译码表对执行下一生成指令编码的生成操作。
8.根据权利要求6所述的基于域填充的处理器指令编码自动生成装置,其特征在于,所述生成模块具体用于:
根据所述目标处理器指令集的指令长度对指令编码进行初始化;
从所述经过预处理的译码图-译码表对中取出任一条生成指令编码的名称,以及各个变化域和所取出的生成指令编码对应的各个变化域编码,将初始化后的指令编码中所述各个变化域所在的编码替换为所述经过预处理的译码图-译码表对中该生成指令编码对应的各个变化域编码,获得新的指令编码;
从所述经过预处理的译码图-译码表对中获取各个固定域和各个固定域编码,将所述新的指令编码中所述各个固定域所在的编码替换为相应的所述经过预处理的译码图-译码表对中的固定域编码,获得一条生成指令编码,并使当前得到的生成指令编码数目加一;
判断当前得到的生成指令编码数目是否等于所述经过预处理的译码图-译码表对中的生成指令编码的总数,若相等,则获知所述经过预处理的译码图-译码表对已经生成了所有的已定义和未定义指令编码,否则,对所述经过预处理的译码图-译码表对执行下一生成指令编码的生成操作。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4任一项所述基于域填充的处理器指令编码自动生成方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至4任一项所述基于域填充的处理器指令编码自动生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910670455.7A CN110569065B (zh) | 2019-07-24 | 2019-07-24 | 基于域填充的处理器指令编码自动生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910670455.7A CN110569065B (zh) | 2019-07-24 | 2019-07-24 | 基于域填充的处理器指令编码自动生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569065A true CN110569065A (zh) | 2019-12-13 |
CN110569065B CN110569065B (zh) | 2021-08-17 |
Family
ID=68773297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910670455.7A Active CN110569065B (zh) | 2019-07-24 | 2019-07-24 | 基于域填充的处理器指令编码自动生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569065B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981886A (zh) * | 2012-12-21 | 2013-03-20 | 中国科学院声学研究所 | 一种优化的memset标准库函数汇编代码生成方法 |
CN106469064A (zh) * | 2016-09-04 | 2017-03-01 | 深圳市云智易联科技有限公司 | 代码生成方法及代码生成装置 |
US9824080B2 (en) * | 2014-01-31 | 2017-11-21 | Aruba Networks, Inc. | Automatic generation of forms for device configuration |
CN108121565A (zh) * | 2016-11-28 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 生成指令集编码的方法、装置和系统 |
CN109067704A (zh) * | 2018-06-28 | 2018-12-21 | 中国空间技术研究院 | 一种卫星遥控指令格式设计与编码管理系统及方法 |
-
2019
- 2019-07-24 CN CN201910670455.7A patent/CN110569065B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981886A (zh) * | 2012-12-21 | 2013-03-20 | 中国科学院声学研究所 | 一种优化的memset标准库函数汇编代码生成方法 |
US9824080B2 (en) * | 2014-01-31 | 2017-11-21 | Aruba Networks, Inc. | Automatic generation of forms for device configuration |
CN106469064A (zh) * | 2016-09-04 | 2017-03-01 | 深圳市云智易联科技有限公司 | 代码生成方法及代码生成装置 |
CN108121565A (zh) * | 2016-11-28 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 生成指令集编码的方法、装置和系统 |
CN109067704A (zh) * | 2018-06-28 | 2018-12-21 | 中国空间技术研究院 | 一种卫星遥控指令格式设计与编码管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110569065B (zh) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341102B (zh) | 一种测试用例文件生成方法及装置 | |
CN109408247A (zh) | 交互数据处理方法及装置 | |
CN111159329A (zh) | 敏感词检测方法、装置、终端设备和计算机可读存储介质 | |
CN113672204A (zh) | 一种接口文档生成方法、系统、电子设备及存储介质 | |
CN107807844B (zh) | 交通测试场景的生成方法、装置及计算机可读存储介质 | |
CN106776779B (zh) | 基于Mac平台的JSON数据生成实体文件的方法 | |
US20200184008A1 (en) | Maintenance of a metafile using spreadheet software | |
CN110390093B (zh) | 一种语言模型建立方法及装置 | |
CN114489950A (zh) | 一种组件适配方法、装置、电子设备及存储介质 | |
CN110569065B (zh) | 基于域填充的处理器指令编码自动生成方法及装置 | |
CN110175047B (zh) | 处理器指令编码的自动生成方法及装置 | |
CN116501415B (zh) | 命令执行方法及装置、电子设备、计算机可读存储介质 | |
CN110555185A (zh) | 基于pc客户端的页面定制方法及系统 | |
CN110688823A (zh) | Xml文件验证方法及装置 | |
CN111882419B (zh) | 质检文件的方法、装置及服务器 | |
CN112596703B (zh) | 需求向开发传承的实现方法、系统及存储介质 | |
CN115935909A (zh) | 一种文件生成方法、装置及电子设备 | |
CN116956838A (zh) | 工程量清单的项目确定方法及确定装置 | |
CN112699642B (zh) | 复杂医疗文书的索引提取方法及装置、介质及电子设备 | |
CN113031940A (zh) | 前端框架开发方法、装置及终端设备 | |
US9052906B2 (en) | Modularized customization of a model in a model driven development environment | |
CN113238748A (zh) | 一种直流控保程序页面修改校验方法、装置、终端及介质 | |
CN110515913B (zh) | 日志处理方法及装置 | |
US10642931B1 (en) | Systems and methods for producing more meaningful web services descriptions via automated cross-reference of external information sources | |
CN116226053B (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 |