指令验证方法、装置及存储介质与流程

文档序号:18163245发布日期:2019-07-13 09:26阅读:210来源:国知局
指令验证方法、装置及存储介质与流程
本发明实施例涉及计算机
技术领域
,尤其涉及一种指令验证方法、装置及存储介质。
背景技术
:在研发处理器的同时,通常会配置有对应的指令文件,指令文件中包括了处理器能够执行的所有指令。为了确保处理器的安全性,需要使得处理器和指令文件具备指令一致性。其中,处理器和指令文件具备指令一致性是指处理器只能执行指令文件中包括的指令,即,当处理器执行指令文件中不包括的指令时,处理器需要报错。在现有技术中,对于定长指令集的处理器,通常会执行所有可能组合的指令,并判断执行不在指令文件中的指令时是否报异常。例如,对于32位指令,首先组合得到232个指令,该232个指令中部分指令为指令文件中包括的指令,部分指令为指令文件中不包括的指令,处理器需要执行组合得到的232个指令,并判断不在指令文件中的执行是否报异常。然而,在上述过程中,需要对大量的指令进行验证,导致指令一致性验证的效率低下。技术实现要素:本发明实施例提供一种指令验证方法、装置及存储介质,提高了指令一致性验证的效率。第一方面,本发明实施例提供一种指令验证方法,包括:在指令文件中确定预留指令和第一合法指令,所述预留指令的第一预设位中的值为空,所述第一合法指令中的第二预设位中的值为固定值;生成所述预留指令对应的第一非法指令集合和所述第一合法指令对应的第二非法指令集合,所述第一非法指令集合中包括至少一个与所述预留指令对应的非法指令,所述第二非法指令集合中包括至少一个与所述第一合法指令对应的非法指令;通过处理器执行所述第一非法指令集合和所述第二非法指令集合中的非法指令,以确定所述处理器和所述指令文件的一致性结果。在一种可能的实施方式中,所述生成所述预留指令对应的第一非法指令集合,包括:根据第一位数,分别将所述第一预设位中的值设置为与所述第一位数对应的第一数值范围中的每一个数值,得到所述第一非法指令集合;所述第一位数为所述第一预设位包含的位数。在另一种可能的实施方式中,所述生成所述第一合法指令对应的第二非法指令集合,包括:根据第二位数以及第三位数,分别将所述第二预设位中的值设置为与所述第二位数对应的第二数值范围中除所述固定值之外的每一个数值,并分别将所述第一合法指令中可变位中的值设置为与所述第三位数对应的第三数值范围中的每一个数值,得到所述第二非法指令集合,所述第二位数为所述第二预设位包含的位数,所述第三位数为所述可变位包含的位数。在另一种可能的实施方式中,所述通过处理器执行所述第一非法指令集合和所述第二非法指令集合中的非法指令,以确定所述处理器和所述指令文件的一致性结果,包括:通过所述处理器执行所述第一非法指令集合和所述第二非法指令集合中的非法指令,得到所述第一非法指令集合和所述第二非法指令集合中每一个非法指令对应的处理结果;根据所述处理结果,确定所述处理器和所述指令文件的一致性结果。在另一种可能的实施方式中,根据所述处理结果,确定所述处理器和所述指令文件的一致性结果,包括:若所述处理结果均包括异常指示,则确定所述一致性结果为所述处理器和所述指令文件具备指令一致性;若所述处理结果中存在至少一条处理结果未包括异常指示,则确定所述一致性结果为所述处理器和所述指令文件不具备指令一致性。第二方面,本发明实施例提供一种指令验证装置,包括第一确定模块、生成模块和第二确定模块,其中,所述第一确定模块用于,在指令文件中确定预留指令和第一合法指令,所述预留指令的第一预设位中的值为空,所述第一合法指令中的第二预设位中的值为固定值;所述生成模块用于,生成所述预留指令对应的第一非法指令集合和所述第一合法指令对应的第二非法指令集合,所述第一非法指令集合中包括至少一个与所述预留指令对应的非法指令,所述第二非法指令集合中包括至少一个与所述第一合法指令对应的非法指令;所述第二确定模块用于,通过处理器执行所述第一非法指令集合和所述第二非法指令集合中的非法指令,以确定所述处理器和所述指令文件的一致性结果。在一种可能的实施方式中,所述生成模块具体用于:根据第一位数,分别将所述第一预设位中的值设置为与所述第一位数对应的第一数值范围中的每一个数值,得到所述第一非法指令集合;所述第一位数为所述第一预设位包含的位数。在另一种可能的实施方式中,所述生成模块具体用于:根据第二位数以及第三位数,分别将所述第二预设位中的值设置为与所述第二位数对应的第二数值范围中除所述固定值之外的每一个数值,并分别将所述第一合法指令中可变位中的值设置为与所述第三位数对应的第三数值范围中的每一个数值,得到所述第二非法指令集合,所述第二位数为所述第二预设位包含的位数,所述第三位数为所述可变位包含的位数。在另一种可能的实施方式中,所述第二确定模块具体用于:通过所述处理器执行所述第一非法指令集合和所述第二非法指令集合中的非法指令,得到所述第一非法指令集合和所述第二非法指令集合中每一个非法指令对应的处理结果;根据所述处理结果,确定所述处理器和所述指令文件的一致性结果。在另一种可能的实施方式中,所述第二确定模块具体用于:若所述处理结果均包括异常指示,则确定所述一致性结果为所述处理器和所述指令文件具备指令一致性;若所述处理结果中存在至少一条处理结果未包括异常指示,则确定所述一致性结果为所述处理器和所述指令文件不具备指令一致性。第三方面,本发明实施例提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面任一项所述的方法。本发明实施例提供的指令验证方法、装置及存储机制,在指令文件中确定预留指令和第一合法指令,预留指令的第一预设位中的值为空,第一合法指令中的第二预设位中的值为固定值;分别生成预留指令对应的第一非法指令集合和第一合法指令对应的第二非法指令集合;通过处理器执行第一非法指令集合和第二非法指令集合中的非法指令,以确定处理器和指令文件的一致性结果。在上述过程中,处理器只需对非法指令(第一非法指令集合和第二非法指令集合中的非法指令)进行验证即可获取得到一致性验证结果,非法指令的数量远远小于根据指令位数组合得到的指令的个数,进而提高了对指令一致性验证的效率。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的指令验证的架构图;图2为本发明实施例提供的指令验证方法的流程示意图一;图3为本发明实施例提供的指令验证方法的流程示意图二;图4为本发明实施例提供的指令验证装置的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明实施例提供的指令验证的架构图。请参见图1,包括指令文件101和处理器102。其中,在指令文件中包括处理器102能够执行的指令。当需要验证处理器和指令文件的一致性时,可以根据指令文件101中包括的指令,生成非法指令,并通过处理器102对非法指令进行验证,以得到指令文件101和处理器102的一致性验证结果。在本申请中,先获取非法指令,再对非法指令进行验证即可获取得到一致性验证结果,非法指令的数量远远小于根据指令位数组合得到的指令的个数,因此,可以提高对指令一致性验证的效率。下面,通过具体实施例,对本申请所示的技术方案进行详细说明。需要说明的是,下面几个具体实施例可以相互结合,对于相同或相似的内容,在不同的实施例中不再进行重复说明。图2为本发明实施例提供的指令验证方法的流程示意图一。请参见图2,该方法可以包括:s201、在指令文件中确定预留指令和第一合法指令,预留指令的第一预设位中的值为空,第一合法指令中的第二预设位中的值为固定值。本发明实施例的执行主体可以为指令验证装置。可选的,该指令验证装置可以通过软件实现,或者,该指令验证装置也可以通过软件和硬件的结合实现。可选的,可以根据指令文件中的编码表,确定预留指令和第一合法指令。可选的,编码表是一种查找表,编码表的行索引和列索引都是二进制的比特位,通过编码表的行索引和列索引可以查到得到对应的指令。例如,对于32位指令,编码表的行索引可以为指令的高3位,编码表的列索引可以为指令的低3位。对于指令文件中的任意一个指令,可以通过指令中预设位数中的值表示指令的类型。可选的,对于32位指令,可以通过指令的高6位(第31位至第26位)和低6位(第5位至第0位)表示指令的类型。例如,对于32位指令,当第31位至第26位为000000,第5位至第0位为100001时,该指令表示addu指令。在本发明实施例中,预留指令是指预留出来、以便后续进行扩展的指令。可选的,预留指令中包括指令类型位和第一预设位。其中,可以通过指令类型位中的数值表示指令的类型。第一预设位中的值为空。对于预留指令,当第一预设位中的值为被设置为非空时,则对应的指令为一个非法指令。可选的,预留指令的格式可以如表1所示:表1指令类型位第一预设位指令类型位xxx空xxx可选的,对于32位指令,指令类型位可以为高6位和低6位,第一预设位可以为第6位至第25位。例如,假设一个32位的预留指令如表2所示:表2指令类型位第一预设位指令类型位31-2625-65-0000000空101000由表2可知,第31-26位(000000)和第5-0位(101000)用于表示指令的类型,第25-6位中的值为空。当第25-6位(一共20位)中的值为任意值时,均为非法指令。即,对于一个32位的预留指令,对应的非法指令的个数为220个。在编码表中包括多种类型的合法指令,其中一种类型的合法指令(本发明实施例所示的第一合法指令)中包括第二预设位,第二预设位中的值为固定值,且只有当第二预设位中的值为该固定值时,才可以确定第一合法指令为合法的。在本发明实施例中,第一合法指令是指处理器可以执行、且包括第二预设位的指令。可选的,第一合法指令中包括指令类型位、第二预设位和可变位。其中,可以通过指令类型位中的数值表示指令的类型。第二预设位中的值为固定值。可变位中的值可以为任意值。对于第一合法指令,当第二预设位中的值为固定值之外的其它值时,则对应的指令为一个非法指令。可选的,第一合法指令的格式可以如表3所示:表3指令类型位可变位第二预设位指令类型位xxx任意值固定值xxx可选的,对于32位指令,指令类型位可以为高6位和低6位,第二预设位可以为第7位至第11位,可变位可以为第12位至第25位。例如,假设一个32位的第一合法指令为addu指令,且addu指令如表4所示:表4指令类型位可变位第二预设位指令类型位31-2625-1110-65-0000000任意值00000100001由表4可知,第31-26位(000000)和第5-0位(100001)用于表示指令的类型,第10-6位中的值为固定值“0”,第25-11位中的值可以为任意值。当第二预设位(第10-6位,共5位)中的值不是0时,可变位(第25-11位,共15位)中的数值为任意值时,均为非法指令。即,对于一个32位的第一合法指令,对应的非法指令的个数为215×(25-1)个。可选的,对于编码表中的任意一条指令,可以根据指令中包括的内容判断指令为预留指令还是第一合法指令。若一个指令中包括指令类型位和第一预设位,则可以确定该指令为预留指令,若一个指令中包括指令类型位、第二预设位和可变位,则可以确定该指令为预留指令。例如,对于32位指令,若该指令中包括[31-26]、[25-6]、[5-0]这三部分,且第25-6位中的值为空时,则可以确定该指令为预留指令;若指令中包括[31-26]、[25-11]、[10-6]、[5-0]这四部分,且第10-6位中的值为固定值时,则可以确定该指令为第一合法指令。s202、分别生成预留指令对应的第一非法指令集合和第一合法指令对应的第二非法指令集合。其中,第一非法指令集合中包括至少一个与预留指令对应的非法指令,第二非法指令集合中包括至少一个与第一合法指令对应的非法指令。可选的,可以根据第一位数,分别将第一预设位中的值设置为与第一位数对应的第一数值范围中的每一个数值,得到第一非法指令集合;第一位数为第一预设位包含的位数。例如,假设第一预设位包含的位数为n,则第一数值范围为0至2n-1,第一非法指令集合中包括的非法指令的个数为2n个。例如,假设预留指令如表5所示:表531-2625-65-0000000空101000在表5所示的预留指令中,第“000000”和“101000”表示指令的类型,第6-25位中的值为空。当需要生成该预留指令对应的非法指令时,可以分别将第25-6位的值设置为0至220-1中的每一个值,得到220个预留指令对应的非法指令,并确定第一非法指令集合包括该220个预留指令对应的非法指令。可选的,可以根据第二位数以及第三位数,分别将第二预设位中的值设置为与第二位数对应的第二数值范围中除固定值之外的每一个数值,并分别将第一合法指令中可变位中的值设置为与第三位数对应的第三数值范围中的每一个数值,得到第二非法指令集合,第二位数为第二预设位包含的位数,第三位数为可变位包含的位数。例如,假设第二预设位包含的位数为m,则第二数值范围为0至2m-1,可变位包含的位数为p,则第三数值范围为0至2p-1,相应的,第二非法指令集合中包括的非法指令的个数为(2m-1)×2p。例如,假设第一合法指令如表6所示:表631-2625-1110-65-0000000任意值00000100001在表6所示的第一合法指令中,“000000”和“100001”表示指令的类型,第10-6位中的值为固定值“0”,第25-11位中的值可以为任意值。当需要生成该第一合法指令对应的第二非法指令时,可以分别将第10-6位中的数值设置为1至25-1中的每一个值,并分别将第25-11位中的数值设置为0至215-1中的每一个值,得到(25-1)×215个第一合法指令对应的非法指令,并确定第二非法指令集合包括该(25-1)×215个第一合法指令对应的非法指令。s203、通过处理器执行第一非法指令集合和第二非法指令集合中的非法指令,以确定处理器和指令文件的一致性结果。可选的,可以通过处理器执行第一非法指令集合和第二非法指令集合中的非法指令,得到第一非法指令集合和第二非法指令集合中每一个非法指令对应的处理结果,并根据处理结果,确定处理器和指令文件的一致性结果。其中,若处理结果均包括异常指示,则确定一致性结果为处理器和指令文件具备指令一致性;若处理结果中存在至少一条处理结果不包括异常指示,则确定一致性结果为处理器和指令文件不具备指令一致性。本发明实施例提供的指令验证方法,在指令文件中确定预留指令和第一合法指令,预留指令的第一预设位中的值为空,第一合法指令中的第二预设位中的值为固定值;分别生成预留指令对应的第一非法指令集合和第一合法指令对应的第二非法指令集合;通过处理器执行第一非法指令集合和第二非法指令集合中的非法指令,以确定处理器和指令文件的一致性结果。在上述过程中,处理器只需对非法指令(第一非法指令集合和第二非法指令集合中的非法指令)进行验证即可获取得到一致性验证结果,非法指令的数量远远小于根据指令位数组合得到的指令的个数,进而提高了对指令一致性验证的效率。在图2所示实施例的基础上,下面,提供图3所示的实施例对指令验证方法进行进一步详细说明。图3为本发明实施例提供的指令验证方法的流程示意图二。请参见图3,该方法可以包括:s301、在编码表中确定至少一个预留指令和至少一个第一合法指令。需要说明的是,s301的执行过程可以参见s201的执行过程,此处不再进行赘述。s302、根据第一位数,分别将第一预设位中的值设置为与第一位数对应的第一数值范围中的每一个数值,得到所述第一非法指令集合。其中,第一位数为所述第一预设位包含的位数。s303、根据第二位数以及第三位数,分别将第二预设位中的值设置为与第二位数对应的第二数值范围中除固定值之外的每一个数值,并分别将第一合法指令中可变位中的值设置为与第三位数对应的第三数值范围中的每一个数值,得到第二非法指令集合。其中,第二位数为第二预设位包含的位数,第三位数为可变位包含的位数。需要说明的是,s302-s303的执行过程可以参见s202的执行过程,此处不再进行赘述。s304、分别通过处理器执行每一个第一非法指令集合和第二非法指令集合中的非法指令,得到每一个第一非法指令集合和第二非法指令集合中每一个非法指令对应的处理结果。s305、根据每一个处理结果,确定处理器和指令文件的一致性结果。需要说明的是,s304-s305的执行过程可以参见s203的执行过程,此处不再进行赘述。在图3所示的实施例中,处理器只需对非法指令(第一非法指令和第二非法指令)进行验证即可获取得到一致性验证结果,非法指令的数量远远小于根据指令位数组合得到的指令的个数,因此,可以提高了对指令一致性验证的效率。图4为本发明实施例提供的指令验证装置的结构示意图。请参见图4,包括第一确定模块11、生成模块12和第二确定模块13,其中,所述第一确定模块11用于,在指令文件中确定预留指令和第一合法指令,所述预留指令的第一预设位中的值为空,所述第一合法指令中的第二预设位中的值为固定值;所述生成模块12用于,生成所述预留指令对应的第一非法指令集合和所述第一合法指令对应的第二非法指令集合,所述第一非法指令集合中包括至少一个与所述预留指令对应的非法指令,所述第二非法指令集合中包括至少一个与所述第一合法指令对应的非法指令;所述第二确定模块13用于,通过处理器执行所述第一非法指令集合和所述第二非法指令集合中的非法指令,以确定所述处理器和所述指令文件的一致性结果。本发明实施例提供的指令验证装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。在一种可能的实施方式中,所述生成模块12具体用于:根据第一位数,分别将所述第一预设位中的值设置为与所述第一位数对应的第一数值范围中的每一个数值,得到所述第一非法指令集合;所述第一位数为所述第一预设位包含的位数。在另一种可能的实施方式中,所述生成模块12具体用于:根据第二位数以及第三位数,分别将所述第二预设位中的值设置为与所述第二位数对应的第二数值范围中除所述固定值之外的每一个数值,并分别将所述第一合法指令中可变位中的值设置为与所述第三位数对应的第三数值范围中的每一个数值,得到所述第二非法指令集合,所述第二位数为所述第二预设位包含的位数,所述第三位数为所述可变位包含的位数。在另一种可能的实施方式中,所述第二确定模块13具体用于:通过所述处理器执行所述第一非法指令集合和所述第二非法指令集合中的非法指令,得到所述第一非法指令集合和所述第二非法指令集合中每一个非法指令对应的处理结果;根据所述处理结果,确定所述处理器和所述指令文件的一致性结果。在另一种可能的实施方式中,所述第二确定模块13具体用于:若所述处理结果均包括异常指示,则确定所述一致性结果为所述处理器和所述指令文件具备指令一致性;若所述处理结果中存在至少一条处理结果未包括异常指示,则确定所述一致性结果为所述处理器和所述指令文件不具备指令一致性。本发明实施例提供的指令验证装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。本发明实施例还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如上述图2-图3任意实施例所述的方法。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例方案的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1