掌桥专利:专业的专利平台
掌桥专利
首页

指令集测试方法、装置、设备及存储介质

文献发布时间:2023-06-19 19:30:30


指令集测试方法、装置、设备及存储介质

技术领域

本公开涉及计算机技术领域,尤其涉及一种指令集测试方法、装置、设备及存储介质。

背景技术

协议测试指的是按照协议标准,通过控制和观察被测协议实现的外部行为对其进行评价的测试,是属于软件界面与应用服务器间通信规则的测试,因此,软件产品在上线之前,测试软件产品的协议漏洞是一个必不可少的重要环节。

协议中的底层指令一般较为复杂,由于程序缺少包含语义和语法的类型信息,现阶段针对指令集的测试一般都关注在上层算法本身,而忽略了指令集的测试,现阶段针对指令集的测试也基本停留在功能测试和函数单元测试阶段,这些测试虽然能判断出其执行的任务是否成功,但是当任务执行失败时,却不能确定失败的真正原因,比如指令集中出现内存泄漏、数据溢出等方面的原因。

发明内容

本公开提供了一种指令集测试方法、装置、设备及存储介质,以至少解决相关技术中存在的以上技术问题。

根据本公开的第一方面,提供了一种指令集测试方法,所述方法包括:

对待测指令集进行静态分析,得到所述待测指令集的程序数据,其中,所述程序数据用于显示所述指令集内的程序及程序间的执行路径;

对所述待测指令集的程序数据进行约束求解,生成路径约束集合,其中,所述路径约束集合包含测试用例执行的所有执行路径;

基于所述路径约束集合,生成多个测试用例,并根据所述多个测试用例执行所述待测指令集,得到各个测试用例的测试结果;

根据所述各个测试用例的测试结果,确定所述待测指令集的漏洞信息。

在一可实施方式中,所述基于所述路径约束集合,生成多个测试用例,包括:

获取所述测试用例的路径约束条件,其中,所述路径约束条件用于限定测试种子的生成范围,其中,所述测试种子用于衍生多个测试用例;

基于所述路径约束集合和所述测试用例的路径约束条件,生成多个测试用例。

在一可实施方式中,所述获取所述测试用例的路径约束条件,包括:

根据所述待测指令集的类型,确定易产生漏洞信息的测试种子,并根据所述易产生漏洞信息的测试种子生成第一路径约束条件。

在一可实施方式中,所述基于所述路径约束集合,生成多个测试用例,并根据所述多个测试用例执行所述待测指令集,得到各个测试用例的测试结果,包括:

基于所述路径约束集合和具有打分机制类型的模糊测试,生成多个测试用例,并基于测试分数评判标准,根据所述多个测试用例执行所述待测指令集,得到各个测试用例的测试结果和各个测试用例的测试分数,其中,所述测试分数评判标准根据测试速度阈值、测试结果阈值以及到达所述待测指令集的路径深度阈值来确定。

在一可实施方式中,所述获取所述测试用例的路径约束条件,包括:

接收所述各个测试用例的测试分数的反馈信息,生成第二路径约束条件,并确定多个新的测试用例,其中,所述第二路径约束条件为采用测试分数高于分数阈值的测试用例所对应的测试种子;根据所述多个新的测试用例执行所述待测指令集以进行新一轮测试,直至累计进行测试的测试用例个数满足预设测试个数,结束测试。

根据本公开的第二方面,提供了一种指令集测试装置,所述装置包括:

静态分析模块,用于对待测指令集进行静态分析,得到所述待测指令集的程序数据,其中,所述程序数据用于显示所述指令集内的程序及程序间的执行路径;

生成模块,用于对所述待测指令集的程序数据进行约束求解,生成路径约束集合,其中,所述路径约束集合包含测试用例执行的所有执行路径;

模糊测试模块,用于基于所述路径约束集合,生成多个测试用例,并根据所述多个测试用例执行所述待测指令集,得到各个测试用例的测试结果;

漏洞确定模块,用于根据所述各个测试用例的测试结果,确定所述待测指令集的漏洞信息。

在一可实施方式中,所述模糊测试模块具体用于:

获取所述测试用例的路径约束条件,其中,所述路径约束条件用于限定测试种子的生成范围,其中,所述测试种子用于衍生多个测试用例;

基于所述路径约束集合和所述测试用例的路径约束条件,生成多个测试用例。

在一可实施方式中,所述模糊测试模块,具体用于:

根据所述待测指令集的类型,确定易产生漏洞信息的测试种子,并根据所述易产生漏洞信息的测试种子生成第一路径约束条件。

在一可实施方式中,所述模糊测试模块具体用于:

基于具有打分机制类型的模糊测试和测试分数评判标准,根据所述多个测试用例执行所述待测指令集,得到各个测试用例的测试结果和各个测试用例的测试分数,其中,所述测试分数评判标准根据测试速度阈值、测试结果阈值以及到达所述待测指令集的路径深度阈值来确定。

在一可实施方式中,所述模糊测试模块具体用于:

接收所述各个测试用例的测试分数的反馈信息,生成第二路径约束条件,并确定多个新的测试用例,其中,所述第二路径约束条件为采用测试分数高于分数阈值的测试用例所对应的测试种子;根据所述多个新的测试用例执行所述待测指令集以进行新一轮测试,直至累计进行测试的测试用例个数满足预设测试个数,结束测试。

根据本公开的第三方面,提供了一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开所述的方法。

根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本公开所述的方法。

本公开的指令集测试方法、装置、设备及存储介质,通过对待测指令集进行静态分析,得到所述待测指令集的程序数据,其中,所述程序数据用于显示所述指令集内的程序及程序间的执行路径;对所述待测指令集的程序数据进行约束求解,生成路径约束集合,其中,所述路径约束集合包含测试用例执行的所有执行路径;基于所述路径约束集合,生成多个测试用例,并根据所述多个测试用例执行所述待测指令集,得到各个测试用例的测试结果;根据所述各个测试用例的测试结果,确定所述待测指令集的漏洞信息,能够避免无效用例的漏洞检测,提高漏洞检测的检测效率。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:

在附图中,相同或对应的标号表示相同或对应的部分。

图1示出了本公开实施例一提供的一种指令集测试方法的实现流程示意图;

图2A示出了本公开实施例二提供的一种指令集测试方法的实现流程示意图;

图2B示出了本公开实施例二提供的一种示例性的指令集测试方法的实现流程示意图;

图3示出了本公开实施例三提供的一种指令集测试装置的结构示意图;

图4示出了本公开实施例一种电子设备的组成结构示意图。

具体实施方式

为使本公开的目的、特征、优点能够更加的明显和易懂,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而非全部实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

实施例一

图1为本公开实施例一提供的一种指令集测试方法的流程图,该方法可以由本公开实施例提供的指令集测试装置来执行,该装置可采用软件和/或硬件的方式实现。该方法具体包括:

S110、对待测指令集进行静态分析,得到待测指令集的程序数据。

其中,程序数据用于显示指令集内的程序及程序间的执行路径。

其中,待测指令集可以是待测协议里的具体执行的内容。例如,在协议计算中,待测指令集可以是通过.mpc文件实现高级加密标准(Advanced Encryption Standard,AES)等文件。待测协议指的是需要测试漏洞的协议。程序数据可以是通过静态分析的方式得到指令集内的所有程序及各个程序间能够执行的执行路径。

由于很多待测指令集属于底层指令,为二进制文件,不是明文文件,在测试待测指令集的漏洞信息时,不能像一般的代码去直接测量。因此本实施例可以对待测指令集进行静态分析,将底层指令翻译成简单且规范的中间语言,并且在中间语言的基础上对指令集进行静态分析以得到程序及程序间的执行路径。

具体的,本实施例对待测指令集进行静态分析的过程可以是在自身系统集成的静态分析组件进行分析;也可以通过系统外具有静态分析功能的软件或硬件进行分析;还可以将静态分析的过程进行拆分,先利用一软件或硬件将待测指令集翻译为中间文件,再利用另一软件或硬件基于该中间文件进行分析。本实施例得到的待测指令集的程序数据为基于对待测指令集进行翻译后的中间文件,进行静态分析得到的绘制程序依赖关系图、数据流图及程序控制流图。其中,绘制程序依赖关系图为程序本身,数据流图为程序间的执行路径,例如可以是程序间的运算过程,程序控制流图可以是依赖于程序的多种复杂的执行路径。

S120、对待测指令集的程序数据进行约束求解,生成路径约束集合。

其中,路径约束集合包含测试用例执行的所有执行路径。

具体的,本实施例在通过静态分析得到的程序数据后,可以基于翻译后的中间语言的语义对程序数据进行分析。示例性的,本实施例可以采用系统集成的符号执行组件,也可以采用系统外具有符号执行功能的硬件或软件对其进行分析。其中,符号执行组件的基本思想是用抽象符号代替程序变量,或将程序变量的值表示为符号值和常量组成的计算表达式,模拟程序执行,从而进行相关分析。也即,通过符号执行组件对待测指令集的程序数据进行约束求解的过程,可以是用抽象的符号代替具体数值去测试待测指令集,输出测试结果,将测试结果跟预设的结果进行比对。如果结果正确,则该符号所执行的路径就是所需要的约束路径,作为路径约束集合内的执行路径之一。

需要说明的是,本实施例所采用的符号执行组件不仅仅是将上述结果正确所对应的约束路径归纳至路径约束集合,实际上符号执行组件还会扩大约束路径并入路径约束集合。例如,若上述通过符号执行组件约束求解后的约束路径为AB,则将约束路径AB按照一定规则扩大为A1A2A3B1B2B3存储至路径约束集合。如此,本实施例生成的路径约束集合内覆盖了关于待测指令集的所有执行路径。

S130、基于路径约束集合,生成多个测试用例,并根据多个测试用例执行待测指令集,得到各个测试用例的测试结果。

其中,测试用例指的是输入待测指令集进行测试的用例。测试结果指的是测试用例进行漏洞检测后的结果,例如可以包含待测指令集执行后的执行结果,又例如在该执行结果之外,还包含有该测试用例对应的执行路径。

具体的,本实施例为了降低无效测试用例,因此测试用例并不是随机生成的,而是在路径约束集合的基础上生成的。生成测试用例的过程也可以是依赖于系统内或者系统外,本实施例只要能够生成测试用例就行,不对其具体生成过程进行限定。本实施例在生成测试用例之后,就可以依次将测试用例输入待测指令集进行漏洞测试。需要说明的是,本实施例所采用的漏洞测试方法可以是相关技术中的任意一种能够实现漏洞检测的测试方法,例如可以是模糊测试,具体例如可以是具有打分机制的模糊测试或者动态插桩类模糊测试。

具体的,本实施例可以基于路径约束集合直接生成多个测试用例,也可以附加其他生成条件,在路径约束集合和其他生成条件的基础上,约束测试用例的生成范围。其中,其他生成条件可以是根据待测指令集本身特性有关,也可以是人为根据经验而设定的条件。除此之外,生成测试用例的个数可以是任意值。例如,若存在有一个计算类协议,通过约束求解后的路径约束集合为0-1000,说明测试用例的生成范围为0-1000,本实施例可以直接基于该路径约束集合生成多个测试用例。若研发人员根据经验得到的是关于该类协议,800-1000存在的漏洞可能性较低,因此,本实施例为了提高测试用例的质量,可以附加其他生成条件,排除漏洞可能性较低的测试用例,在0-800的基础上生成测试用例。

S140、根据各个测试用例的测试结果,确定待测指令集的漏洞信息。

本实施例在将测试用例输入待测指令集后,可以得到与该测试用例相对应的测试结果,则可以根据测试结果确定待测指令集的漏洞信息。例如,针对计算类协议,本实施例可以将待测用例执行计算类协议的待测指令集,若得到的测试结果与预设结果不一样,则表明该测试用例在待测指令集内所执行的执行路径存在漏洞;针对通信类协议,本实施例可以将待测用例执行计算类协议的待测指令集,若得到的测试结果为通信失败,则表明该测试用例在待测指令集内所执行的执行路径存在漏洞。

本实施例提供的指令集测试方法,通过对待测指令集进行静态分析,得到待测指令集的程序数据;对待测指令集的程序数据进行约束求解,生成路径约束集合;基于路径约束集合,生成多个测试用例,并根据多个测试用例执行待测指令集,得到各个测试用例的测试结果;根据各个测试用例的测试结果,确定待测指令集的漏洞信息,能够避免无效用例的漏洞检测,提高漏洞检测的检测效率。

实施例二

图2A为本公开实施例二提供的一种指令集测试方法的流程图,本公开实施例在上述实施例的基础上,其中,基于路径约束集合,生成多个测试用例,并根据多个测试用例执行待测指令集,得到各个测试用例的测试结果,包括:基于路径约束集合和具有打分机制类型的模糊测试,生成多个测试用例,并基于测试分数评判标准,根据多个测试用例执行待测指令集,得到各个测试用例的测试结果和各个测试用例的测试分数,其中,测试分数评判标准根据测试速度阈值、测试结果阈值以及到达待测指令集的路径深度阈值来确定。该方法具体包括:

S210、对待测指令集进行静态分析,得到待测指令集的程序数据。

其中,程序数据用于显示指令集内的程序及程序间的执行路径。

S220、对待测指令集的程序数据进行约束求解,生成路径约束集合。

其中,路径约束集合包含测试用例执行的所有执行路径。

S230、基于路径约束集合和具有打分机制类型的模糊测试,生成多个测试用例,并基于测试分数评判标准,根据多个测试用例执行待测指令集,得到各个测试用例的测试结果和各个测试用例的测试分数。

其中,测试分数评判标准根据测试速度阈值、测试结果阈值以及到达待测指令集的路径深度阈值来确定。其中,测试速度阈值可以是根据待测用例进行模糊测试的测试时间而确定,本实施例可以设置多个测试速度阈值,每个测试速度阈值对应有不同的速度范围,针对不同的测试速度阈值对应于不同的分数;测试结果阈值可以是根据待测用例进行模糊测试的测试结果所设定的阈值来确定,若符合要求则设定阈值较低,若不符合测试要求则设定阈值较高,针对不同的测试结果阈值也对应有不同的分数;到达待测指令集的路径深度阈值可以是根据待测用例在模糊测试时到达待测指令集的路径深度而定,本实施例可以根据不同的路径深度设定不同的路径深度阈值,每个路径深度阈值对应有不同的路径深度范围,针对不同的路径深度阈值对应有不同的分数,例如待测用例到达待测指令集的路径深度越深,说明覆盖率越高,得分就越高。

除此之外,本实施例提供的测试分数评判标准是根据测试速度阈值、测试结果阈值以及到达待测指令集的路径深度阈值来综合确定的,不是通过单一元素而确定的。例如,有些测试用例虽然测试时间较短、测试速度较快,即使测试结果阈值较高,但是因其进入待测指令集内的路径较浅,所以测试分数可能也不会很高。

具体的,模糊测试作为软件漏洞分析的代表性技术,因其具有不依赖于程序源代码且系统消耗低的优点,所以在软件漏洞分析领域占据重要地位。模糊测试由于它不需要了解程序的内部结构,因此具有开销较小的优点,但存在测试盲目性较大、测试效率较低以及代码覆盖率无法保证等问题。而且在模糊测试中,用例生成方法也是关键的技术之一,用例的生成方法直接影响了模糊测试的覆盖度与漏洞挖掘效率。本实施例为了克服模糊测试的缺点,采用符号执行技术,因为符号执行技术具有很好的路径覆盖率。具体为,本实施例采用符号执行技术对静态分析后的待测指令集进行约束求解,得出路径约束集合,基于路径约束集合和模糊测试可以生成具有导向性的测试用例进行模糊测试。

具体的,本实施例可以采用具有打分机制类型的模糊测试,基于测试分数评判标准对各个待测用例进行打分,这样待测用例输入待测指令集进行模糊测试的执行结果,不仅有测试结果还有对应的测试分数。通过该测试分数可以反映对应的测试用例的品质高低。例如,若测试用例A执行待测指令集进行模糊测试的测试分数为90,测试用例B执行待测指令集进行模糊测试的测试分数为60,则说明测试用例B的质量要高于测试用例A。

S240、根据各个测试用例的测试结果,确定待测指令集的漏洞信息。

本实施例通过路径约束集合和模糊测试相结合的方式,能够大幅度提高模糊测试的效率,检测效果也会明显提高。

在本公开实施例中,基于路径约束集合,生成多个测试用例,包括:获取测试用例的路径约束条件,其中,路径约束条件用于限定测试种子的生成范围,其中,测试种子用于衍生多个测试用例;基于路径约束集合和测试用例的路径约束条件,生成多个测试用例。

具体的,本实施例为了提高测试用例的生成质量,可以进一步通过设定路径约束条件来限定测试种子的生成范围。基于路径约束集合和测试用例的路径约束条件,获得更为优质的测试种子,基于更为优质的测试种子生成多个测试用例,本实施例根据路径约束条件有针对性地设计测试用例,能够有效提高模糊测试的测试效果。

在本公开实施例中,获取测试用例的路径约束条件,包括:根据待测指令集的类型,确定易产生漏洞信息的测试种子,并根据易产生漏洞信息的测试种子生成第一路径约束条件。

由于不同待测指令集的特点不同,其弱项也不同,因此本实施例可以针对此特点设置第一路径约束条件,通过第一路径约束条件有针对性的选择易产生漏洞信息的测试种子。例如,以隐私计算协议中多方安全计算SPDZ协议为例,由于其在Programs/Source/下存放较多的指令集*.mpc文件,这些文件都是具体的执行算法,具有数学计算量大、取模操作较多的特点,针对该类待测指令集文件应该关注待测指令集文件的数据的溢出、反转、命令注入、空指针的使用,以及协议正确性和性能测试等,找到上述攻击面则更容易找到漏洞,因此第一路径约束条件可以基于上述弱项来设置以提高测试种子的质量。又例如,测隐私计算类别的待测指令集,本实施例可以有针对性的针对有限域上顺序执行的浮点数、定点数进行测试,该部分更容易发现待测指令集的漏洞信息,因此第一路径约束条件也可以基于上述情况来设置以提高测试种子的质量。

本实施例有针对性的对待测指令集的弱项进行模糊测试,这样有助于更快速的发现待测指令集的漏洞信息,消除安全隐患。

在本公开实施例中,获取测试用例的路径约束条件,包括:接收各个测试用例的测试分数的反馈信息,生成第二路径约束条件,并确定多个新的测试用例;根据多个新的测试用例执行待测指令集以进行新一轮测试,直至累计进行测试的测试用例个数满足预设测试个数,结束测试。

其中,第二路径约束条件为采用测试分数高于分数阈值的测试用例所对应的测试种子;预设测试个数指的是进行测试的测试用例总个数;分数阈值指的是用于区分是否采用衍生该测试用例的测试种子的临界分数值。

具体的,本实施例为了发现更全面的漏洞信息,一般会设置多轮模糊测试,每轮模糊测试可以设置一个待测用例进行测试,也可以设置多个待测用例进行测试。为了方便理解,示例性的,本实施例的测试用例的预设测试个数为100个,每轮测试设置10个测试用例,本实施例先通过路径约束集合和/或第一路径约束条件生成第一批10个测试用例,将该第一批10个测试用例逐个输入待测指令集进行测试,再生成第二批10个测试用例逐个输入待测指令集进行测试,直至生成第100个测试用例进行测试为止,测试结束。

具体的,本实施例可以根据模糊测试的测试分数,评估总结之前的测试工作,来决定下一步测试种子的生成方向。例如,本实施例可以接收各个测试用例的测试分数的反馈信息,通过各个测试用例的测试分数的反馈信息生成第二路径约束条件,在下一轮生成测试用例时,则可以根据第二路径约束条件筛选出更为优质的测试种子,基于更为优质的测试种子来生成多个新的测试用例,并根据多个新的测试用例执行待测指令集以进行新一轮测试,如此反复直至累计进行测试的测试用例个数满足预设测试个数,结束测试。

示例性的,若存在有一个计算类协议,通过约束求解后的路径约束集合为0-1000,测试用例的预设测试个数为100个,每轮测试设置10个测试用例,在经过第一轮测试后,本实施例接收第一轮测试用例的测试分数的反馈信息可知,500-1000范围内的测试用例的测试分数较高,发现漏洞信息较多,且执行的待测指令集的执行路径较深,因此,本实施例可以将范围500-1000设置为第二路径约束条件,基于路径约束集合和第二路径约束条件,在范围500-1000内生成新的测试种子,基于新的测试种子生成新的测试用例,进行第二轮测试,以此类推,每轮测试后都根据各个测试用例的测试分数的反馈信息,给予下一轮测试种子以导向信息,从而有利于挖掘更深执行路径的漏洞信息。

图2B为本公开实施例提供的一种示例性的指令集测试方法的流程图。本实施例以隐私计算指令集为例进行说明,如图2B所示,本实施例的测试系统集成有静态分析组件、符号执行组件以及模糊测试组件。其中,静态分析组件也可称为指令翻译器。具体的,本实施例通过静态分析组件对隐私计算指令集进行静态分析得到程序数据,通过符号执行组件对程序数据进行约束求解得到路径约束集合,基于路径约束集合和模糊测试生成测试用例进行隐私计算,通过计算结果进行评估反馈至符号执行组件,也即附加第二路径约束条件,以基于路径约束集合和第二路径约束条件的基础上生成下一轮的测试用例,直至测试用例生成个数达到预设测试个数,测试结束。

本实施例考虑到测试种子的优劣,没有均等对待每个测试种子,避免花费时间在低质量的测试种子上,通过基于各个测试用例的测试分数的反馈信息生成第二路径约束条件,使用第二路径约束条件筛选出更为优质的测试种子,更有利于扩大待测指令集的覆盖率,揭示无法发现的漏洞信息。

实施例三

图3是本公开实施例提供的一种指令集测试装置的结构示意图,该装置具体包括:

静态分析模块310,用于对待测指令集进行静态分析,得到待测指令集的程序数据,其中,程序数据用于显示指令集内的程序及程序间的执行路径;

生成模块320,用于对待测指令集的程序数据进行约束求解,生成路径约束集合,其中,路径约束集合包含测试用例执行的所有执行路径;

模糊测试模块330,用于基于路径约束集合,生成多个测试用例,并根据多个测试用例执行待测指令集,得到各个测试用例的测试结果;

漏洞确定模块340,用于根据各个测试用例的测试结果,确定待测指令集的漏洞信息。

在一可实施方式中,模糊测试模块330具体用于:获取测试用例的路径约束条件,其中,路径约束条件用于限定测试种子的生成范围,其中,测试种子用于衍生多个测试用例;基于路径约束集合和测试用例的路径约束条件,生成多个测试用例。

在一可实施方式中,模糊测试模块330具体用于:根据待测指令集的类型,确定易产生漏洞信息的测试种子,并根据易产生漏洞信息的测试种子生成第一路径约束条件。

在一可实施方式中,模糊测试模块具体330用于:基于具有打分机制类型的模糊测试和测试分数评判标准,根据多个测试用例执行待测指令集,得到各个测试用例的测试结果和各个测试用例的测试分数,其中,测试分数评判标准根据测试速度阈值、测试结果阈值以及到达待测指令集的路径深度阈值来确定。

在一可实施方式中,模糊测试模块330具体用于:接收各个测试用例的测试分数的反馈信息,生成第二路径约束条件,并确定多个新的测试用例,其中,第二路径约束条件为采用测试分数高于分数阈值的测试用例所对应的测试种子;根据多个新的测试用例执行待测指令集以进行新一轮测试,直至累计进行测试的测试用例个数满足预设测试个数,结束测试。

根据本公开的实施例,本公开还提供了一种电子设备和一种可读存储介质。

图4示出了可以用来实施本公开的实施例的示例电子设备400的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图4所示,设备400包括计算单元401,其可以根据存储在只读存储器(ROM)402中的计算机程序或者从存储单元408加载到随机访问存储器(RAM)403中的计算机程序,来执行各种适当的动作和处理。在RAM 403中,还可存储设备400操作所需的各种程序和数据。计算单元401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。

设备400中的多个部件连接至I/O接口405,包括:输入单元406,例如键盘、鼠标等;输出单元407,例如各种类型的显示器、扬声器等;存储单元408,例如磁盘、光盘等;以及通信单元409,例如网卡、调制解调器、无线通信收发机等。通信单元409允许设备400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元401的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元401执行上文所描述的各个方法和处理,例如指令集测试方法。例如,在一些实施例中,指令集测试方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元408。在一些实施例中,计算机程序的部分或者全部可以经由ROM 402和/或通信单元409而被载入和/或安装到设备400上。当计算机程序加载到RAM 403并由计算单元401执行时,可以执行上文描述的指令集测试方法的一个或多个步骤。备选地,在其他实施例中,计算单元401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行指令集测试方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

技术分类

06120115931632