CN115686631A - 一种基于知识基的随机指令生成方法、装置及存储介质 - Google Patents

一种基于知识基的随机指令生成方法、装置及存储介质 Download PDF

Info

Publication number
CN115686631A
CN115686631A CN202211382800.5A CN202211382800A CN115686631A CN 115686631 A CN115686631 A CN 115686631A CN 202211382800 A CN202211382800 A CN 202211382800A CN 115686631 A CN115686631 A CN 115686631A
Authority
CN
China
Prior art keywords
instruction
immediate
register
generating
generation
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
Application number
CN202211382800.5A
Other languages
English (en)
Other versions
CN115686631B (zh
Inventor
刘鹏
胡文超
王文
刘扬帆
王贺
施葹
沈秀红
乔栩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hexin Technology Co ltd
Zhejiang University ZJU
Original Assignee
Hexin Technology Co ltd
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hexin Technology Co ltd, Zhejiang University ZJU filed Critical Hexin Technology Co ltd
Priority to CN202211382800.5A priority Critical patent/CN115686631B/zh
Publication of CN115686631A publication Critical patent/CN115686631A/zh
Application granted granted Critical
Publication of CN115686631B publication Critical patent/CN115686631B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开了一种基于知识基的随机指令生成方法、装置及存储介质,方法包括:知识基包括架构测试知识、指令的操作码、寄存器和立即数的先验规则;根据知识基对输入参数进行解析,获取目标指令的指令操作名称;根据知识基调用指令操作码生成函数,随机生成指令操作码;根据知识基调用指令参数模型,获取目标指令的指令参数数据;调用对应的参数生成函数,随机生成对应的指令参数值;根据指令操作码对应的指令汇编格式,对指令参数值进行排列,生成一条具体指令;将具体指令写入指令模拟器中进行实时仿真,生成输出指令和指令执行轨迹;在知识基的指导下生成随机指令的方法可以作用于不同处理器指令集架构一致性检测。

Description

一种基于知识基的随机指令生成方法、装置及存储介质
技术领域
本发明涉及处理器设计和验证技术领域,尤其涉及一种基于知识基的随机指令生成方法、装置及存储介质。
背景技术
处理器硬件安全是信息系统能被安全使用的基础前提,指令集体系架构作为处理器的底层基础,是处理器硬件安全的关键所在。为了支持越来越多的新兴应用,在处理器设计过程中不断有新的指令操作被添加进指令集,而指令集通常需要保持向后兼容性,有些旧版本的指令可能不被现有应用程序需要,但是仍然存在于指令集中,这可能会造成处理器执行出错。同时,随着处理器的设计规模愈发复杂,指令集体系架构通常由大量人员共同设计实现,极易可能在指令集中留下设计隐患。因此,需要对处理器的指令集架构进行一致性检测,保证其安全性是保证处理器硬件安全的关键。
现有的测试指令的随机生成方式大多采用简单直接的随机化指令中的参数进行生成,或者针对特定处理器的指令集进行针对性的随机生成。对于处理器产业来说,缺少对指令集架构一致性检测理论和方法且对于不同处理器指令集架构一致性检测不具有扩展性,即无法复用已有的指令集架构一致性检测技术到其他处理器指令集架构一致性检测当中,导致检测周期长,验证步骤复杂,验证效率低下。
发明内容
本发明提供了一种基于知识基的随机指令生成方法、装置及存储介质,在由指令集架构检测的架构测试知识和先验知识规则构成的知识基的指导下,生成的随机指令可以作用于不同处理器指令集架构一致性检测,提高不同处理器指令集架构检测的效率,实现随机指令自动化生成的可复用性。
本发明实施例提供了一种基于知识基的随机指令生成方法,包括:
获取输入参数,根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称;所述知识基包括架构测试知识及指令操作码、寄存器和立即数的先验规则;
根据所述指令操作名称和所述知识基的指令操作码的先验规则,调用指令操作码生成函数,随机生成指令操作码;
根据所述指令操作名称,调用对应的指令参数模型,获取所述目标指令的指令参数数据;其中,一个所述指令参数模型对应一个指令操作名称,所述指令参数数据包括寄存器参数数据和立即数参数数据;
根据所述指令参数数据和知识基的寄存器和立即数的先验规则,调用对应的参数生成函数,随机生成对应的指令参数值;
根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹;当所述输出指令的数量满足预设条件时,将所有所述输出指令和所述指令执行轨迹发送到测试程序进行测试。
作为优选方案,本发明的基于知识基的随机指令生成方法,根据目标指令的指令操作名称,在知识基的指令的操作码的先验规则的指导下,调用指令操作码生成函数,随机生成指令操作码;根据所述指令参数数据,在知识基的指令的寄存器和立即数的先验规则的指导下,调用对应的参数生成函数,随机生成对应的指令参数值;最后利用指令操作码,指令参数值进行排列,生成一条具体指令,将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹。
由于不同处理器指令集架构的指令基本是由指令操作码、寄存器的指令参数值和立即数的指令参数值这三种指令参数组成,因此根据知识基生成三种指令参数再拼接为一条具体指令的方法,可以复用在不同处理器指令集架构中,可以适配不同处理器指令集架构检测,提高了不同处理器指令集架构检测的效率,提高随机指令自动化生成的可复用性。
作为优选方案,根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称,具体为:
判断输入参数是否包含指令操作名称;
其中,所述输入参数包括所述目标指令的指令操作名称和指令数量;或,所述输入参数包括所述目标指令的指令操作类型和指令数量;
若输入参数包含所述目标指令的指令操作名称,则直接获取所述指令操作名称;
若输入参数包含所述目标指令的指令操作类型且不带有目标指令的指令操作名称,则根据所述指令操作类型,从知识基的架构测试知识中获取对应指令类型的指令宏;其中,所述指令宏包括同一类型的指令操作名称的集合,所述架构测试知识包括不同处理器指令集架构中的所有指令。
作为优选方案,输入参数包括目标指令的指令操作名称和指令数量;或,所述输入参数包括目标指令的指令操作类型和指令数量,若输入参数包括所述目标指令的指令操作类型和指令数量且不带有目标指令的指令操作名称,则根据所述指令操作类型,从知识基中获取对应指令类型的指令宏,所述指令宏包括同一类型的指令操作名称的集合。
知识基中的架构测试知识把不同处理器指令集架构中的所有指令都包含进来,以指令宏的形式存在,用户只需要调用一次指令宏就可以生成指令宏下的所有指令而不需要每次输入指令操作名称。用户调用指令宏的方法可以复用在不同处理器指令集架构中,可以适配不同处理器指令集架构检测,提高了不同处理器指令集架构检测的效率,提高随机指令自动化生成的可复用性。
作为优选方案,调用指令操作码生成函数,随机生成指令操作码,具体为:
调用对应的指令操作名称的指令操作码生成函数,所述指令操作码生成函数包括第一操作码生成子函数、第二操作码生成子函数和第三操作码生成子函数;所述操作码生成函数根据所述知识基的指令的操作码的先验规则生成;
所述第一操作码生成子函数生成的操作码和上一条指令的操作码相同,所述第二操作码生成子函数生成的操作码和上一条指令操作码不同,所述第三操作码生成子函数生成未覆盖到的指令操作码;
结合指令历史记录表中的操作码生成历史记录表,动态调整第一操作码生成子函数、第二操作码生成子函数和第三操作码生成子函数的权重;
根据设置的权重随机选择一个操作码生成子函数生成指令操作码。
作为优选方案,调用对应的指令操作名称的指令操作码生成函数,随机生成指令操作码,根据所述知识基的指令的操作码的先验规则,和上一条指令的操作码相同、不同或者未覆盖到的指令操作码的规则,分别构建三个操作码生成子函数,结合指令历史记录表中的操作码生成历史记录表,动态调整三个操作码生成子函数的权重,随机选择一个操作码生成子函数生成指令操作码。根据知识基的指令的操作码的先验规则构建操作码生成函数,该先验规则对于不同处理器指令集架构检测具有通用性,在该先验规则的指导下生成指令操作码的方法,可以适配不同处理器指令集架构检测。
作为优选方案,调用对应的参数生成函数,随机生成对应的指令参数值,具体为:
根据寄存器参数数据,调用寄存器生成函数,随机生成寄存器参数值;其中,所述寄存器参数数据包括所述目标指令的寄存器的定义、数量和值域范围;一个所述目标指令的寄存器对应一个所述寄存器参数值;所述寄存器生成函数根据所述知识基的指令的寄存器的先验规则生成;
根据立即数参数数据,调用立即数生成函数,随机生成立即数参数值;其中,所述立即数参数数据包括所述目标指令的立即数的定义、数量和值域范围;一个所述目标指令的立即数对应一个所述立即数参数值;所述立即数生成函数根据所述知识基的指令的立即数的先验规则生成。
作为优选方案,利用了知识基的指令的寄存器和立即数的先验规则指导目标指令的寄存器的指令参数值和立即数的指令参数值的生成,根据指令操作码、寄存器的指令参数值和立即数的指令参数值,再根据指令汇编格式拼接为一条具体指令。由于不同处理器指令集架构的指令基本是由指令操作码、寄存器的指令参数值和立即数的指令参数值这三种指令参数组成,因此根据知识基生成三种指令参数再拼接为一条具体指令的方法,可以复用在不同处理器指令集架构中,可以适配不同处理器指令集架构检测,提高了不同处理器指令集架构检测的效率,提高随机指令自动化生成的可复用性。
作为优选方案,调用寄存器生成函数,随机生成预设寄存器参数值,具体为:
调用寄存器生成函数,所述寄存器生成函数包括第一寄存器生成子函数、第二寄存器生成子函数、第三寄存器生成子函数和第四寄存器生成子函数;
所述第一寄存器生成子函数依赖单条指令间寄存器,所述第二寄存器生成子函数依赖相邻指令间寄存器,所述第三寄存器生成子函数依赖多条指令间寄存器,所述第四寄存器生成子函数生成未覆盖到的寄存器;
设置第一寄存器生成子函数、第二寄存器生成子函数、第三寄存器生成子函数和第四寄存器生成子函数的权重;
根据设置的权重随机选择一个寄存器生成子函数生成寄存器参数值。
作为优选方案,调用寄存器生成函数,随机生成预设寄存器参数值,根据所述知识基的指令的寄存器的先验规则,依赖单条指令间寄存器、依赖相邻指令间寄存器、依赖多条指令间寄存器或者未覆盖到寄存器的规则,分别构建四个寄存器生成子函数,设置四个寄存器生成子函数的权重,随机选择一个寄存器生成子函数生成寄存器参数值。根据知识基的指令的寄存器的先验规则构建寄存器生成函数,该先验规则对于不同处理器指令集架构检测具有通用性,在该先验规则的指导下生成寄存器参数的方法,可以适配不同处理器指令集架构检测。
作为优选方案,调用立即数生成函数,随机生成立即数参数值,具体为:
调用立即数生成函数,所述立即数生成函数包括第一立即数生成子函数、第二立即数生成子函数、第三立即数生成子函数、第四立即数生成子函数和第五立即数生成子函数;
所述第一立即数生成子函数是依赖均匀分布生成立即数,第二立即数生成子函数以寄存器参数为基础生成立即数,第三立即数生成子函数根据同一访存地址生成立即数,第四立即数生成子函数根据连续访存地址生成立即数,第五立即数生成子函数通过构造复杂分支生成立即数;
结合指令历史记录表和寄存器资源模型,动态调整设置第一立即数生成子函数、第二立即数生成子函数、第三立即数生成子函数、第四立即数生成子函数和第五立即数生成子函数的权重;
根据设置的权重随机选择一个立即数生成子函数生成立即数参数值。
作为优选方案,调用立即数生成函数,随机生成立即数参数值,根据所述知识基的指令的立即数的先验规则,均匀分布生成立即数、以寄存器参数为基础生成立即数、根据同一访存地址生成立即数、根据连续访存地址生成立即数或者构造复杂分支生成立即数的规则,分别构建五个立即数生成子函数,设置五个立即数生成子函数的权重,随机选择一个立即数生成子函数生成立即数参数值。根据知识基的指令的立即数的先验规则构建立即数生成函数,该先验规则对于不同处理器指令集架构检测具有通用性,在该先验规则的指导下生成立即数参数的方法,可以适配不同处理器指令集架构检测。
作为优选方案,根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令,还包括:
若所述具体指令为分支指令,则根据指令操作码、寄存器参数值和立即数参数值,计算所述具体指令的跳转目标地址和不跳转后续地址;当所述具体指令发生跳转时,在所述不跳转的后续地址上增加若干条随机生成的第一简单运算的指令和若干条第一分支指令;当所述具体指令不发生跳转时,在所述跳转的目标地址上增加若干条随机生成的第二简单运算的指令和若干条第二分支指令;其中,所述第一分支指令和所述第二分支指令分别用于检测处理器分支预测的功能。
作为优选方案,在生成具体指令的过程中,如果具体指令为分支类型指令则根据分支跳转的情况增加额外的随机指令,通过对分支指令增加额外指令的方法可以适配不同处理器指令集架构检测,提高不同处理器指令集架构检测的效率。
作为优选方案,将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹,具体为:
将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成一个存放所述具体指令的指令地址,根据所述具体指令的功能调用对应的功能函数生成至少一个输出指令和执行轨迹,根据所述输出指令更新下一条指令存放地址。
作为优选方案,指令模拟器对写入的具体指令进行实时仿真,生成随机指令和执行轨迹,并对指令执行的结果进行更新,对指令进行实时仿真的方法可以复用在不同处理器指令集架构中,可以适配不同处理器指令集架构检测,提高了不同处理器指令集架构检测的效率,提高随机指令自动化生成的可复用性。
相应地,本发明还提供一种基于知识基的随机指令生成装置,包括输入参数获取模块、指令求解模块、指令生成模块和指令输出模块;
所述输入参数获取模块用于获取输入参数,根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称;所述知识基包括架构测试知识及指令操作码、寄存器和立即数的先验规则;
所述指令求解模块用于根据所述指令操作名称和所述知识基的指令操作码的先验规则,调用指令操作码生成函数,随机生成指令操作码;根据所述指令操作名称,调用对应的指令参数模型,获取所述目标指令的指令参数数据;其中,一个所述指令参数模型对应一个指令操作名称,所述指令参数数据包括寄存器参数数据和立即数参数数据;
根据所述指令参数数据和知识基的寄存器和立即数的先验规则,调用对应的参数生成函数,随机生成对应的指令参数值;根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;
所述指令生成模块用于将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹;
所述指令输出模块用于当所述输出指令的数量满足预设条件时,将所有所述输出指令和所述指令执行轨迹发送到测试程序进行测试。
作为优选方案,本发明的基于知识基的随机指令生成装置,输入参数获取模块根据目标指令的指令操作名称,基于指令求解模块在知识基的指令的操作码的先验规则的指导下,调用指令操作码生成函数,随机生成指令操作码;根据所述指令参数数据,在知识基的指令的寄存器和立即数的先验规则的指导下,调用对应的参数生成函数,随机生成对应的指令参数值;最后指令生成模块利用指令操作码,指令参数值进行排列,生成一条具体指令,指令生成模块将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹;指令输出模块用于当所述输出指令的数量满足预设条件时,将所有所述输出指令和所述指令执行轨迹发送到测试程序进行测试。
由于不同处理器指令集架构的指令基本是由指令操作码、寄存器的指令参数值和立即数的指令参数值这三种指令参数组成,因此根据知识基生成三种指令参数再拼接为一条具体指令的方法,可以复用在不同处理器指令集架构中,可以适配不同处理器指令集架构检测,提高了不同处理器指令集架构检测的效率,提高随机指令自动化生成的可复用性。
作为优选方案,输入参数获取模块包括解析单元;
所述解析单元用于根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称,具体为:
判断输入参数是否包含指令操作名称;
其中,所述输入参数包括所述目标指令的指令操作名称和指令数量;或,所述输入参数包括所述目标指令的指令操作类型和指令数量;
若输入参数包含所述目标指令的指令操作名称,则直接获取所述指令操作名称;
若输入参数包含所述目标指令的指令操作类型且不带有目标指令的指令操作名称,则根据所述指令操作类型,从知识基的架构测试知识中获取对应指令类型的指令宏;其中,所述指令宏包括同一类型的指令操作名称的集合,所述架构测试知识包括不同处理器指令集架构中的所有指令。
作为优选方案,解析单元根据知识基的架构测试知识对所述输入参数进行解析,输入参数包括目标指令的指令操作名称和指令数量;或,所述输入参数包括目标指令的指令操作类型和指令数量,若输入参数包括所述目标指令的指令操作类型和指令数量且不带有目标指令的指令操作名称,则根据所述指令操作类型,从知识基中获取对应指令类型的指令宏,所述指令宏包括同一类型的指令操作名称的集合。
知识基中的架构测试知识把不同处理器指令集架构中的所有指令都包含进来,以指令宏的形式存在,用户只需要调用一次指令宏就可以生成指令宏下的所有指令而不需要每次输入指令操作名称。用户调用指令宏的方法可以复用在不同处理器指令集架构中,可以适配不同处理器指令集架构检测,提高了不同处理器指令集架构检测的效率,提高随机指令自动化生成的可复用性。
作为优选方案,指令求解模块包括指令操作码生成单元、寄存器参数值生成单元和立即数参数值生成单元;
所述指令操作码生成单元用于根据所述指令操作名称和所述知识基,调用指令操作码生成函数,随机生成指令操作码;根据所述指令操作名称,调用对应的指令参数模型,获取所述目标指令的指令参数数据;其中,一个所述指令参数模型对应一个指令操作名称,所述指令参数数据包括寄存器参数数据和立即数参数数据;
所述寄存器参数值生成单元用于根据寄存器参数数据,调用寄存器生成函数,随机生成寄存器参数值;其中,所述寄存器参数数据包括所述目标指令的寄存器的定义、数量和值域范围;一个所述目标指令的寄存器对应一个所述寄存器参数值;所述寄存器生成函数根据所述知识基的指令的寄存器的先验规则生成;
所述立即数参数值生成单元用于根据立即数参数数据,调用立即数生成函数,随机生成立即数参数值;其中,所述立即数参数数据包括所述目标指令的立即数的定义、数量和值域范围;一个所述目标指令的立即数对应一个所述立即数参数值;所述立即数生成函数根据所述知识基的指令的立即数的先验规则生成。
作为优选方案,寄存器参数值生成单元和立即数参数值生成单元利用了知识基的指令的寄存器和立即数的先验规则指导目标指令的寄存器的指令参数值和立即数的指令参数值的生成,根据指令操作码、寄存器的指令参数值和立即数的指令参数值,再根据指令汇编格式拼接为一条具体指令。由于不同处理器指令集架构的指令基本是由指令操作码、寄存器的指令参数值和立即数的指令参数值这三种指令参数组成,因此根据知识基生成三种指令参数再拼接为一条具体指令的方法,可以复用在不同处理器指令集架构中,可以适配不同处理器指令集架构检测,提高了不同处理器指令集架构检测的效率,提高随机指令自动化生成的可复用性。
作为优选方案,指令生成模块包括具体指令生成单元、分支指令处理单元和输出指令生成单元;
所述具体指令生成单元用于根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;
所述分支指令处理单元用于若所述具体指令为分支指令,则根据指令操作码、寄存器参数值和立即数参数值,计算所述具体指令的跳转目标地址和不跳转后续地址;当所述具体指令发生跳转时,在所述不跳转的后续地址上增加若干条随机生成的第一简单运算的指令和若干条第一分支指令;当所述具体指令不发生跳转时,在所述跳转的目标地址上增加若干条随机生成的第二简单运算的指令和若干条第二分支指令;其中,所述第一分支指令和所述第二分支指令分别用于检测处理器分支预测的功能;
所述输出指令生成单元用于将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成一个存放所述具体指令的指令地址,根据所述具体指令的功能调用对应的功能函数生成至少一个输出指令和执行轨迹,根据所述输出指令更新下一条指令存放地址。
作为优选方案,具体指令生成单元根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;在生成具体指令的过程中,如果具体指令为分支类型指令,分支指令处理单元则根据分支跳转的情况增加额外的随机指令,通过对分支指令增加额外指令的方法可以适配不同处理器指令集架构检测,提高不同处理器指令集架构检测的效率。
相应地,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如本发明内容所述的一种基于知识基的随机指令生成方法。
附图说明
图1是本发明提供的一种基于知识基的随机指令生成方法的一种实施例的流程示意图;
图2是本发明提供的一种基于知识基的随机指令生成装置的一种实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
对指令集架构进行检测的方法是将测试指令送入到处理器中,通过处理器对测试指令的执行结果是否正确来检测其指令集架构是否一致。
本发明对指令集架构一致性检测的检测点进行梳理分析从而构建出知识基,利用知识基中的理论基础指导随机指令的生成,对于不同处理器指令集架构一致性检测具有指导意义,使得生成随机指令的方法可以复用到其他处理器指令集架构一致性检测当中。
知识基是通过对指令集架构检测点进行分析,归纳出不同指令类型需要满足指令集架构检测的先验知识规则,即规定每条指令所要检测的内容,包括不同处理器指令集架构中的所有指令、指令操作码参数检测规则、指令寄存器参数检测规则和指令立即数参数检测规则。上述检测规则用于指导指令操作码、指令寄存器参数和指令立即数参数三种指令参数随机生成的方向,同时该检测规则对于不同处理器指令集架构检测具有通用性,因为不同处理器指令集架构的指令基本是由这三种指令参数组成的。
实施例一
请参照图1,为本发明实施例提供的一种基于知识基的随机指令生成方法,包括步骤S101-S104:
步骤S101:获取输入参数,根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称;所述知识基包括架构测试知识及指令操作码、寄存器和立即数的先验规则;
在本实施例中,知识基包括架构测试知识以及指令操作码、寄存器和立即数的先验规则,即每条指令所要检测的内容,具体为:
架构测试知识包括不同处理器指令集架构中的所有指令,并且以指令宏的形式存在;
指令的操作码的先验规则包括:目标指令操作码的所有可能取值;指令序列中指令操作码与前后多条指令操作码是相同或相异。
指令的寄存器的先验规则包括:单条目标指令的内部寄存器是否等于源寄存器;单条目标指令的内部寄存器的源操作数是否来自同一寄存器;相邻指令之间寄存器不同顺序的读写操作,如先写后写、先读后读、先读后写、先写后读;多条指令之间寄存器不同顺序的读写操作;寄存器编号的所有取值。
指令的立即数的先验规则包括:目标指令立即数在值域内均匀分布;立即数和寄存器值形成相反数组合、倍数组合或正负数组合;立即数根据访存指令覆盖同一地址连续访问和连续地址连续访问;立即数根据分支指令是否实现复杂分支跳转,如向前跳、向后跳、不跳;分支预测功能是否正常实现。
在本实施例中,测试人员根据验证处理器所支持的指令集架构的验证需求,确定输入参数。
在本实施例中,根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称,具体为:
判断输入参数是否包含指令操作名称;
其中,所述输入参数包括所述目标指令的指令操作名称和指令数量;或,所述输入参数包括所述目标指令的指令操作类型和指令数量;
若输入参数包含所述目标指令的指令操作名称,则直接获取所述指令操作名称;
若输入参数包含所述目标指令的指令操作类型且不带有目标指令的指令操作名称,则根据所述指令操作类型,从知识基的架构测试知识中获取对应指令类型的指令宏;其中,所述指令宏包括同一类型的指令操作名称的集合,所述架构测试知识包括不同处理器指令集架构中的所有指令。
示例性地,若输入参数指定指令操作名称为加法指令,指令数量为n,则根据指定的指令操作名称和指令数量随机生成n条加法指令给用户进行指令集架构检测。
在本实施例中,指令宏包括运算类型指令宏、分支类型指令宏、访存类型指令宏、所有类型指令宏。用户只需要调用一次指令宏就可以生成指令宏下的所有指令而不需要每次输入指令操作名称。
示例性地,用户调用指令集中的运算指令宏,生成指令集架构中所有运算类型的指令,包括加法指令、乘法指令、移位指令等。同时,用户可以在指令宏的基础上去删减一些处理器不支持的指令。
步骤S102:根据所述指令操作名称和所述知识基的指令操作码的先验规则,调用指令操作码生成函数,随机生成指令操作码;
在本实施例中,调用指令操作码生成函数,随机生成指令操作码,具体为:
调用对应的指令操作名称的指令操作码生成函数,所述指令操作码生成函数包括第一操作码生成子函数、第二操作码生成子函数和第三操作码生成子函数;所述操作码生成函数根据所述知识基的指令的操作码的先验规则生成;
所述第一操作码生成子函数生成的操作码和上一条指令的操作码相同,所述第二操作码生成子函数生成的操作码和上一条指令操作码不同,所述第三操作码生成子函数生成未覆盖到的指令操作码;
结合指令历史记录表中的操作码生成历史记录表,动态调整第一操作码生成子函数、第二操作码生成子函数和第三操作码生成子函数的权重;
根据设置的权重随机选择一个操作码生成子函数生成指令操作码。
在本实施例中,结合指令历史记录表中的操作码生成历史记录表,动态调整第一操作码生成子函数、第二操作码生成子函数和第三操作码生成子函数的权重,具体为:
如果操作码生成历史记录表中记录的指令操作码不足两条,则三种生成子函数的权重相同;
如果操作码生成历史记录表中最后记录的两条指令操作码是相同的,则当前指令操作码优先生成不同于记录的两条指令操作码或者未覆盖到的指令操作码,即将生成和上一条指令相同操作码的生成子函数(第一操作码生成子函数)权重设置为0%,将第二操作码生成子函数和第三操作码生成子函数的权重各设置为50%,保证所有生成子函数权重之和为100%;
如果操作码生成历史记录表中最后记录的两条指令操作码不相同,则将生成和上一条指令不同操作码的生成子函数(第二操作码生成子函数)权重设置为0%,将另外的两种生成子函数权重各设置为50%。
示例性地,当前操作码生成历史记录表中最后记录的两条指令操作码均为加法指令操作码,则当前指令操作码不会再生成加法指令操作码,而是生成不同于加法指令操作码或者未覆盖到的指令操作码。
步骤S103:根据所述指令操作名称,调用对应的指令参数模型,获取所述目标指令的指令参数数据;其中,一个所述指令参数模型对应一个指令操作名称,所述指令参数数据包括寄存器参数数据和立即数参数数据;根据所述指令参数数据和知识基的寄存器和立即数的先验规则,调用对应的参数生成函数,随机生成对应的指令参数值;
在本实施例中,利用先分类再建模的方式,对同一指令操作名称的指令构建出一个指令参数模型,指令参数模型包括指令中立即数参数和寄存器参数的定义、数量、值域范围,以使相同汇编格式的指令参数是一致的,有效避免对于每一条指令进行建模的时间浪费,并在随机指令生成的过程中保证单条指令生成的合法性,同时对所有指令都建立指令参数模型可以保证指令生成的完备性和指令生成模块对指令参数模型求解的简易性。
示例性地,根据用户级指令的功能将指令分为三个功能大类,分别是运算类型、访存类型、分支类型,在每一个功能大类下根据指令的汇编格式再进行分类,在不同汇编格式类别下定义汇编格式中每个参数的含义和值域,构建出对应的指令参数模型。
在本实施例中,调用对应的参数生成函数,随机生成对应的指令参数值,具体为:
根据寄存器参数数据,调用寄存器生成函数,随机生成寄存器参数值;其中,所述寄存器参数数据包括所述目标指令的寄存器的定义、数量和值域范围;一个所述目标指令的寄存器对应一个所述寄存器参数值;所述寄存器生成函数根据所述知识基的指令的寄存器的先验规则生成;
根据立即数参数数据,调用立即数生成函数,随机生成立即数参数值;其中,所述立即数参数数据包括所述目标指令的立即数的定义、数量和值域范围;一个所述目标指令的立即数对应一个所述立即数参数值;所述立即数生成函数根据所述知识基的指令的立即数的先验规则生成。
在本实施例中,调用寄存器生成函数,随机生成寄存器参数值,具体为:
调用寄存器生成函数,所述寄存器生成函数包括第一寄存器生成子函数、第二寄存器生成子函数、第三寄存器生成子函数和第四寄存器生成子函数;
所述第一寄存器生成子函数依赖单条指令间寄存器,所述第二寄存器生成子函数依赖相邻指令间寄存器,所述第三寄存器生成子函数依赖多条指令间寄存器,所述第四寄存器生成子函数生成未覆盖到的寄存器;
设置第一寄存器生成子函数、第二寄存器生成子函数、第三寄存器生成子函数和第四寄存器生成子函数的权重;
根据设置的权重随机选择一个寄存器生成子函数生成寄存器参数值。
在本实施例中,第一寄存器生成子函数、第二寄存器生成子函数、第三寄存器生成子函数和第四寄存器生成子函数的权重各为25%,所有生成子函数权重之和为100%。
在本实施例中,调用立即数生成函数,随机生成立即数参数值,具体为:
调用立即数生成函数,所述立即数生成函数包括第一立即数生成子函数、第二立即数生成子函数、第三立即数生成子函数、第四立即数生成子函数和第五立即数生成子函数;
所述第一立即数生成子函数是依赖均匀分布生成立即数,第二立即数生成子函数以寄存器参数为基础生成立即数,第三立即数生成子函数根据同一访存地址生成立即数,第四立即数生成子函数根据连续访存地址生成立即数,第五立即数生成子函数通过构造复杂分支生成立即数;
结合指令历史记录表和寄存器资源模型,动态调整设置第一立即数生成子函数、第二立即数生成子函数、第三立即数生成子函数、第四立即数生成子函数和第五立即数生成子函数的权重;
根据设置的权重随机选择一个立即数生成子函数生成立即数参数值。
在本实施例中,生成的指令操作为运算指令时,则将第一立即数生成子函数和第二立即数生成子函数的权重各设置为50%,其他生成立即数子函数权重设置为0%;
生成的指令操作为访存指令时,则将第三立即数生成子函数和第四立即数生成子函数的权重各设置为50%,其他三种立即数生成子函数权重为0%;
生成的指令操作为分支指令时,则将第五立即数生成子函数的权重设置100%,其他立即数生成子函数权重设置为0%。
步骤S104:根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹;当所述输出指令的数量满足预设条件时,将所有所述输出指令和所述指令执行轨迹发送到测试程序进行测试。
在本实施例中,还包括:
若所述具体指令为分支指令,则根据指令操作码、寄存器参数值和立即数参数值,计算所述具体指令的跳转目标地址和不跳转后续地址;当所述具体指令发生跳转时,在所述不跳转的后续地址上增加若干条随机生成的第一简单运算的指令和若干条第一分支指令;当所述具体指令不发生跳转时,在所述跳转的目标地址上增加若干条随机生成的第二简单运算的指令和若干条第二分支指令;其中,所述第一分支指令和所述第二分支指令分别用于检测处理器分支预测的功能。
在本实施例中,当所述具体指令发生跳转时,在所述不跳转的后续地址上增加2条随机生成的第一简单运算的指令和1条第一分支指令;当所述具体指令不发生跳转时,在所述跳转的目标地址上增加2条随机生成的第二简单运算的指令和1条第二分支指令;其中,简单运算指令包括加法指令、减法指令、移位指令。
在本实施例中,根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令,具体为:
调用指令拼接辅助函数,根据所述指令操作码对应的指令汇编格式,对指令操作码、寄存器参数值和立即数参数值进行排列。同时指令拼接辅助函数对指令类型是否为分支类型进行判断。
在本实施例中,将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹,具体为:
将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成一个存放所述具体指令的指令地址,根据所述具体指令的功能调用对应的功能函数生成至少一个输出指令和执行轨迹,根据所述输出指令更新下一条指令存放地址。
在本实施例中,根据所述具体指令的功能调用对应的功能函数生成至少一个输出指令和执行轨迹,具体为:
调用汇编函数生成指令二进制码,根据指令二进制码对具体指令进行译码和执行,生成至少一个输出指令和执行轨迹;
执行轨迹包括:指令汇编格式、指令二进制码、当前指令地址、指令执行前源操作数的地址和数值、指令执行结果的地址和数值、下一条指令地址。
在本实施例中,指令模拟器生成至少一个输出指令和指令执行轨迹之后,还包括:根据执行轨迹更新指令历史记录表和寄存器资源模型;
指令历史记录表包括:指令操作码生成历史记录表、源寄存器参数生成历史记录表、目的寄存器参数生成历史记录表、程序计数器历史记录表、分支跳转地址历史记录表、已访存地址历史记录表;
寄存器资源模型包括:通用寄存器的位宽、数量、编号、寄存器中存储的数值。
在本实施例中,在随机指令生成的过程中,可以实时访问寄存器资源模型指导指令生成,示例性地,随机生成加法指令时可以通过访问寄存器资源模型中所有寄存器存储的数值,构造两个正数相加/两个负数相加/一个正数和一个负数相加的情况,用于覆盖更多的测试组合。
实施本发明实施例,具有如下效果:
本发明的基于知识基的随机指令生成方法,根据目标指令的指令操作名称,在知识基的指令的操作码的先验规则的指导下,调用指令操作码生成函数,随机生成指令操作码;根据所述指令参数数据,在知识基的指令的寄存器和立即数的先验规则的指导下,调用对应的参数生成函数,随机生成对应的指令参数值;最后利用指令操作码,指令参数值进行排列,生成一条具体指令,将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹。
由于不同处理器指令集架构的指令基本是由指令操作码、寄存器的指令参数值和立即数的指令参数值这三种指令参数组成,因此根据知识基生成三种指令参数再拼接为一条具体指令的方法,可以复用在不同处理器指令集架构中,可以适配不同处理器指令集架构检测,提高了不同处理器指令集架构检测的效率,提高随机指令自动化生成的可复用性。
实施例二
请参照图2,为本发明实施例提供的一种基于知识基的随机指令生成装置,包括:输入参数获取模块201、指令求解模块202、指令生成模块203和指令输出模块204;
所述输入参数获取模块201用于获取输入参数,根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称;所述知识基包括架构测试知识及指令操作码、寄存器和立即数的先验规则;
所述指令求解模块202用于根据所述指令操作名称和所述知识基的指令操作码的先验规则,调用指令操作码生成函数,随机生成指令操作码;根据所述指令操作名称,调用对应的指令参数模型,获取所述目标指令的指令参数数据;其中,一个所述指令参数模型对应一个指令操作名称,所述指令参数数据包括寄存器参数数据和立即数参数数据;
根据所述指令参数数据和知识基的寄存器和立即数的先验规则,调用对应的参数生成函数,随机生成对应的指令参数值;根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;
所述指令生成模块203用于将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹;
所述指令输出模块204用于当所述输出指令的数量满足预设条件时,将所有所述输出指令和所述指令执行轨迹发送到测试程序进行测试。
输入参数获取模块包括解析单元;
所述解析单元用于根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称,具体为:
判断输入参数是否包含指令操作名称;
其中,所述输入参数包括所述目标指令的指令操作名称和指令数量;或,所述输入参数包括所述目标指令的指令操作类型和指令数量;
若输入参数包含所述目标指令的指令操作名称,则直接获取所述指令操作名称;
若输入参数包含所述目标指令的指令操作类型且不带有目标指令的指令操作名称,则根据所述指令操作类型,从知识基的架构测试知识中获取对应指令类型的指令宏;其中,所述指令宏包括同一类型的指令操作名称的集合,所述架构测试知识包括不同处理器指令集架构中的所有指令。
指令求解模块包括指令操作码生成单元、寄存器参数值生成单元和立即数参数值生成单元;
所述指令操作码生成单元用于根据所述指令操作名称和所述知识基,调用指令操作码生成函数,随机生成指令操作码;根据所述指令操作名称,调用对应的指令参数模型,获取所述目标指令的指令参数数据;其中,一个所述指令参数模型对应一个指令操作名称,所述指令参数数据包括寄存器参数数据和立即数参数数据;
所述寄存器参数值生成单元用于根据寄存器参数数据,调用寄存器生成函数,随机生成寄存器参数值;其中,所述寄存器参数数据包括所述目标指令的寄存器的定义、数量和值域范围;一个所述目标指令的寄存器对应一个所述寄存器参数值;所述寄存器生成函数根据所述知识基的指令的寄存器的先验规则生成;
所述立即数参数值生成单元用于根据立即数参数数据,调用立即数生成函数,随机生成立即数参数值;其中,所述立即数参数数据包括所述目标指令的立即数的定义、数量和值域范围;一个所述目标指令的立即数对应一个所述立即数参数值;所述立即数生成函数根据所述知识基的指令的立即数的先验规则生成。
指令生成模块包括具体指令生成单元、分支指令处理单元和输出指令生成单元;
所述具体指令生成单元用于根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;
所述分支指令处理单元用于若所述具体指令为分支指令,则根据指令操作码、寄存器参数值和立即数参数值,计算所述具体指令的跳转目标地址和不跳转后续地址;当所述具体指令发生跳转时,在所述不跳转的后续地址上增加若干条随机生成的第一简单运算的指令和若干条第一分支指令;当所述具体指令不发生跳转时,在所述跳转的目标地址上增加若干条随机生成的第二简单运算的指令和若干条第二分支指令;其中,所述第一分支指令和所述第二分支指令分别用于检测处理器分支预测的功能;
所述输出指令生成单元用于将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成一个存放所述具体指令的指令地址,根据所述具体指令的功能调用对应的功能函数生成至少一个输出指令和执行轨迹,根据所述输出指令更新下一条指令存放地址。
上述的基于知识基的随机指令生成装置可实施上述方法实施例的基于知识基的随机指令生成方法。上述方法实施例中的可选项也适用于本实施例,这里不再详述。本申请实施例的其余内容可参照上述方法实施例的内容,在本实施例中,不再进行赘述。
实施本发明实施例,具有如下效果:
本发明的基于知识基的随机指令生成装置,输入参数获取模块根据目标指令的指令操作名称,基于指令求解模块在知识基的指令的操作码的先验规则的指导下,调用指令操作码生成函数,随机生成指令操作码;根据所述指令参数数据,在知识基的指令的寄存器和立即数的先验规则的指导下,调用对应的参数生成函数,随机生成对应的指令参数值;最后指令生成模块利用指令操作码,指令参数值进行排列,生成一条具体指令,指令生成模块将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹;指令输出模块用于当所述输出指令的数量满足预设条件时,将所有所述输出指令和所述指令执行轨迹发送到测试程序进行测试。
由于不同处理器指令集架构的指令基本是由指令操作码、寄存器的指令参数值和立即数的指令参数值这三种指令参数组成,因此根据知识基生成三种指令参数再拼接为一条具体指令的方法,可以复用在不同处理器指令集架构中,可以适配不同处理器指令集架构检测,提高了不同处理器指令集架构检测的效率,提高随机指令自动化生成的可复用性。
实施例三
相应地,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上任意一项实施例所述的基于知识基的随机指令生成方法。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述终端设备中的执行过程。
所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器、存储器。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据移动终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.一种基于知识基的随机指令生成方法,其特征在于,包括:
获取输入参数,根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称;所述知识基包括架构测试知识及指令操作码、寄存器和立即数的先验规则;
根据所述指令操作名称和所述知识基的指令操作码的先验规则,调用指令操作码生成函数,随机生成指令操作码;
根据所述指令操作名称,调用对应的指令参数模型,获取所述目标指令的指令参数数据;其中,一个所述指令参数模型对应一个指令操作名称,所述指令参数数据包括寄存器参数数据和立即数参数数据;
根据所述指令参数数据和知识基的寄存器和立即数的先验规则,调用对应的参数生成函数,随机生成对应的指令参数值;
根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹;当所述输出指令的数量满足预设条件时,将所有所述输出指令和所述指令执行轨迹发送到测试程序进行测试。
2.如权利要求1所述的一种基于知识基的随机指令生成方法,其特征在于,所述根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称,具体为:
判断输入参数是否包含指令操作名称;
其中,所述输入参数包括所述目标指令的指令操作名称和指令数量;或,所述输入参数包括所述目标指令的指令操作类型和指令数量;
若输入参数包含所述目标指令的指令操作名称,则直接获取所述指令操作名称;
若输入参数包含所述目标指令的指令操作类型且不带有目标指令的指令操作名称,则根据所述指令操作类型,从知识基的架构测试知识中获取对应指令类型的指令宏;其中,所述指令宏包括同一类型的指令操作名称的集合,所述架构测试知识包括不同处理器指令集架构中的所有指令。
3.如权利要求1所述的一种基于知识基的随机指令生成方法,其特征在于,所述调用指令操作码生成函数,随机生成指令操作码,具体为:
调用对应的指令操作名称的指令操作码生成函数,所述指令操作码生成函数包括第一操作码生成子函数、第二操作码生成子函数和第三操作码生成子函数;所述操作码生成函数根据所述知识基的指令的操作码的先验规则生成;
所述第一操作码生成子函数生成的操作码和上一条指令的操作码相同,所述第二操作码生成子函数生成的操作码和上一条指令操作码不同,所述第三操作码生成子函数生成未覆盖到的指令操作码;
结合指令历史记录表中的操作码生成历史记录表,动态调整第一操作码生成子函数、第二操作码生成子函数和第三操作码生成子函数的权重;
根据设置的权重随机选择一个操作码生成子函数生成指令操作码。
4.如权利要求1所述的一种基于知识基的随机指令生成方法,其特征在于,所述调用对应的参数生成函数,随机生成对应的指令参数值,具体为:
根据寄存器参数数据,调用寄存器生成函数,随机生成寄存器参数值;其中,所述寄存器参数数据包括所述目标指令的寄存器的定义、数量和值域范围;一个所述目标指令的寄存器对应一个所述寄存器参数值;所述寄存器生成函数根据所述知识基的指令的寄存器的先验规则生成;
根据立即数参数数据,调用立即数生成函数,随机生成立即数参数值;其中,所述立即数参数数据包括所述目标指令的立即数的定义、数量和值域范围;一个所述目标指令的立即数对应一个所述立即数参数值;所述立即数生成函数根据所述知识基的指令的立即数的先验规则生成。
5.如权利要求4所述的一种基于知识基的随机指令生成方法,其特征在于,所述调用寄存器生成函数,随机生成寄存器参数值,具体为:
调用寄存器生成函数,所述寄存器生成函数包括第一寄存器生成子函数、第二寄存器生成子函数、第三寄存器生成子函数和第四寄存器生成子函数;
所述第一寄存器生成子函数依赖单条指令间寄存器,所述第二寄存器生成子函数依赖相邻指令间寄存器,所述第三寄存器生成子函数依赖多条指令间寄存器,所述第四寄存器生成子函数生成未覆盖到的寄存器;
设置第一寄存器生成子函数、第二寄存器生成子函数、第三寄存器生成子函数和第四寄存器生成子函数的权重;
根据设置的权重随机选择一个寄存器生成子函数生成寄存器参数值。
6.如权利要求4所述的一种基于知识基的随机指令生成方法,其特征在于,所述调用立即数生成函数,随机生成立即数参数值,具体为:
调用立即数生成函数,所述立即数生成函数包括第一立即数生成子函数、第二立即数生成子函数、第三立即数生成子函数、第四立即数生成子函数和第五立即数生成子函数;
所述第一立即数生成子函数是依赖均匀分布生成立即数,第二立即数生成子函数以寄存器参数为基础生成立即数,第三立即数生成子函数根据同一访存地址生成立即数,第四立即数生成子函数根据连续访存地址生成立即数,第五立即数生成子函数通过构造复杂分支生成立即数;
结合指令历史记录表和寄存器资源模型,动态调整设置第一立即数生成子函数、第二立即数生成子函数、第三立即数生成子函数、第四立即数生成子函数和第五立即数生成子函数的权重;
根据设置的权重随机选择一个立即数生成子函数生成立即数参数值。
7.如权利要求1所述的一种基于知识基的随机指令生成方法,其特征在于,所述根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令,还包括:
若所述具体指令为分支指令,则根据指令操作码、寄存器参数值和立即数参数值,计算所述具体指令的跳转目标地址和不跳转后续地址;当所述具体指令发生跳转时,在所述不跳转的后续地址上增加若干条随机生成的第一简单运算的指令和若干条第一分支指令;当所述具体指令不发生跳转时,在所述跳转的目标地址上增加若干条随机生成的第二简单运算的指令和若干条第二分支指令;其中,所述第一分支指令和所述第二分支指令分别用于检测处理器分支预测的功能。
8.如权利要求1所述的一种基于知识基的随机指令生成方法,其特征在于,所述将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹,具体为:
将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成一个存放所述具体指令的指令地址,根据所述具体指令的功能调用对应的功能函数生成至少一个输出指令和执行轨迹,根据所述输出指令更新下一条指令存放地址。
9.一种基于知识基的随机指令生成装置,其特征在于,包括输入参数获取模块、指令求解模块、指令生成模块和指令输出模块;
所述输入参数获取模块用于获取输入参数,根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称;所述知识基包括架构测试知识及指令操作码、寄存器和立即数的先验规则;
所述指令求解模块用于根据所述指令操作名称和所述知识基的指令操作码的先验规则,调用指令操作码生成函数,随机生成指令操作码;根据所述指令操作名称,调用对应的指令参数模型,获取所述目标指令的指令参数数据;其中,一个所述指令参数模型对应一个指令操作名称,所述指令参数数据包括寄存器参数数据和立即数参数数据;
根据所述指令参数数据和知识基的寄存器和立即数的先验规则,调用对应的参数生成函数,随机生成对应的指令参数值;根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;
所述指令生成模块用于将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成至少一个输出指令和指令执行轨迹;
所述指令输出模块用于当所述输出指令的数量满足预设条件时,将所有所述输出指令和所述指令执行轨迹发送到测试程序进行测试。
10.如权利要求9所述的一种基于知识基的随机指令生成装置,其特征在于,所述输入参数获取模块包括解析单元;
所述解析单元用于根据知识基的架构测试知识对所述输入参数进行解析,获取目标指令的指令操作名称,具体为:
判断输入参数是否包含指令操作名称;
其中,所述输入参数包括所述目标指令的指令操作名称和指令数量;或,所述输入参数包括所述目标指令的指令操作类型和指令数量;
若输入参数包含所述目标指令的指令操作名称,则直接获取所述指令操作名称;
若输入参数包含所述目标指令的指令操作类型且不带有目标指令的指令操作名称,则根据所述指令操作类型,从知识基的架构测试知识中获取对应指令类型的指令宏;其中,所述指令宏包括同一类型的指令操作名称的集合,所述架构测试知识包括不同处理器指令集架构中的所有指令。
11.如权利要求9所述的一种基于知识基的随机指令生成装置,其特征在于,所述指令求解模块包括指令操作码生成单元、寄存器参数值生成单元和立即数参数值生成单元;
所述指令操作码生成单元用于根据所述指令操作名称和所述知识基,调用指令操作码生成函数,随机生成指令操作码;根据所述指令操作名称,调用对应的指令参数模型,获取所述目标指令的指令参数数据;其中,一个所述指令参数模型对应一个指令操作名称,所述指令参数数据包括寄存器参数数据和立即数参数数据;
所述寄存器参数值生成单元用于根据寄存器参数数据,调用寄存器生成函数,随机生成寄存器参数值;其中,所述寄存器参数数据包括所述目标指令的寄存器的定义、数量和值域范围;一个所述目标指令的寄存器对应一个所述寄存器参数值;所述寄存器生成函数根据所述知识基的指令的寄存器的先验规则生成;
所述立即数参数值生成单元用于根据立即数参数数据,调用立即数生成函数,随机生成立即数参数值;其中,所述立即数参数数据包括所述目标指令的立即数的定义、数量和值域范围;一个所述目标指令的立即数对应一个所述立即数参数值;所述立即数生成函数根据所述知识基的指令的立即数的先验规则生成。
12.如权利要求9所述的一种基于知识基的随机指令生成装置,其特征在于,所述指令生成模块包括具体指令生成单元、分支指令处理单元和输出指令生成单元;
所述具体指令生成单元用于根据所述指令操作码对应的指令汇编格式,对所述指令参数值进行排列,生成一条具体指令;
所述分支指令处理单元用于若所述具体指令为分支指令,则根据指令操作码、寄存器参数值和立即数参数值,计算所述具体指令的跳转目标地址和不跳转后续地址;当所述具体指令发生跳转时,在所述不跳转的后续地址上增加若干条随机生成的第一简单运算的指令和若干条第一分支指令;当所述具体指令不发生跳转时,在所述跳转的目标地址上增加若干条随机生成的第二简单运算的指令和若干条第二分支指令;其中,所述第一分支指令和所述第二分支指令分别用于检测处理器分支预测的功能;
所述输出指令生成单元用于将所述具体指令写入指令模拟器中进行实时仿真,以使指令模拟器生成一个存放所述具体指令的指令地址,根据所述具体指令的功能调用对应的功能函数生成至少一个输出指令和执行轨迹,根据所述输出指令更新下一条指令存放地址。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如权利要求1至8中任意一项所述的一种基于知识基的随机指令生成方法。
CN202211382800.5A 2022-11-07 2022-11-07 一种基于知识基的随机指令生成方法、装置及存储介质 Active CN115686631B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211382800.5A CN115686631B (zh) 2022-11-07 2022-11-07 一种基于知识基的随机指令生成方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211382800.5A CN115686631B (zh) 2022-11-07 2022-11-07 一种基于知识基的随机指令生成方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN115686631A true CN115686631A (zh) 2023-02-03
CN115686631B CN115686631B (zh) 2023-08-29

Family

ID=85049978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211382800.5A Active CN115686631B (zh) 2022-11-07 2022-11-07 一种基于知识基的随机指令生成方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN115686631B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116681023A (zh) * 2023-06-08 2023-09-01 合芯科技有限公司 一种基于格林函数的波形筛选方法及装置
CN117112033A (zh) * 2023-08-28 2023-11-24 海光信息技术(成都)有限公司 随机指令生成方法、装置、设备以及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121565A (zh) * 2016-11-28 2018-06-05 阿里巴巴集团控股有限公司 生成指令集编码的方法、装置和系统
US20200301795A1 (en) * 2019-03-19 2020-09-24 Hewlett Packard Enterprise Development Lp Instruction generation for validation of processor functionality
CN112559045A (zh) * 2020-12-23 2021-03-26 中国电子科技集团公司第五十八研究所 一种基于riscv的随机指令生成平台及方法
CN114564396A (zh) * 2022-02-28 2022-05-31 无锡江南计算技术研究所 基于数据路径约束求解的随机指令测试程序生成方法
CN115168194A (zh) * 2022-06-24 2022-10-11 中国人民解放军军事科学院国防科技创新研究院 一种针对工具链的随机指令生成测试平台
CN115269006A (zh) * 2022-08-03 2022-11-01 北京奕斯伟计算技术股份有限公司 机器码指令转换方法、装置、电子设备及可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121565A (zh) * 2016-11-28 2018-06-05 阿里巴巴集团控股有限公司 生成指令集编码的方法、装置和系统
US20200301795A1 (en) * 2019-03-19 2020-09-24 Hewlett Packard Enterprise Development Lp Instruction generation for validation of processor functionality
CN112559045A (zh) * 2020-12-23 2021-03-26 中国电子科技集团公司第五十八研究所 一种基于riscv的随机指令生成平台及方法
CN114564396A (zh) * 2022-02-28 2022-05-31 无锡江南计算技术研究所 基于数据路径约束求解的随机指令测试程序生成方法
CN115168194A (zh) * 2022-06-24 2022-10-11 中国人民解放军军事科学院国防科技创新研究院 一种针对工具链的随机指令生成测试平台
CN115269006A (zh) * 2022-08-03 2022-11-01 北京奕斯伟计算技术股份有限公司 机器码指令转换方法、装置、电子设备及可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘婧等: ""基于指令模板的通用处理器约束随机指令生成方法"", 《计算机工程》, pages 309 - 313 *
姚英彪等: ""微处理器功能验证程序生成"", 《计算机辅助设计与图形学学报》, pages 1484 - 1490 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116681023A (zh) * 2023-06-08 2023-09-01 合芯科技有限公司 一种基于格林函数的波形筛选方法及装置
CN116681023B (zh) * 2023-06-08 2024-04-09 合芯科技有限公司 一种基于格林函数的波形筛选方法及装置
CN117112033A (zh) * 2023-08-28 2023-11-24 海光信息技术(成都)有限公司 随机指令生成方法、装置、设备以及存储介质
CN117112033B (zh) * 2023-08-28 2024-04-12 海光信息技术(成都)有限公司 随机指令生成方法、装置、设备以及存储介质

Also Published As

Publication number Publication date
CN115686631B (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
CN115686631B (zh) 一种基于知识基的随机指令生成方法、装置及存储介质
US20060150160A1 (en) Software analyzer
CN110941552B (zh) 一种基于动态污点分析的内存分析方法及装置
CN112100072B (zh) 应用程序代码的静态检测方法、装置、设备及介质
CN109101237A (zh) 代码的加密编译方法及装置
CN110196720B (zh) 一种Simulink生成动态链接库的优化方法
CN109871312B (zh) 一种接口测试方法、装置、设备及可读存储介质
JP2014053010A (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
CN114238948A (zh) 一种应用程序检测方法、装置、电子设备及存储介质
CN114297704A (zh) 数据脱敏方法、装置、存储介质及电子设备
CN111753302A (zh) 检测代码漏洞的方法、装置、计算机可读介质及电子设备
JP2000040005A (ja) プログラム変換装置
CN111158667B (zh) 代码注入方法和装置、电子设备及存储介质
CN110688320B (zh) 全局变量的检测方法、装置及终端设备
CN113805861B (zh) 基于机器学习的代码生成方法、代码编辑系统及存储介质
CN115629762A (zh) 一种json数据处理方法、装置、电子设备及存储介质
CN114924925A (zh) 指令集模拟器的测试方法、装置、电子设备及存储介质
CN113448874A (zh) 一种单元测试脚本的生成方法及装置
CN112925523A (zh) 对象比较方法、装置、设备及计算机可读介质
CN111338968A (zh) 项目的功能模块调试方法、装置、介质及电子设备
Scherer et al. I/o interaction analysis of binary code
Letychevskyi et al. Fuzz Testing Technique and its Use in Cybersecurity Tasks
CN117008972B (zh) 一种指令分析方法、装置、计算设备及存储介质
Legay et al. Statistical model checking of llvm code
CN117075912B (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
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Liu Peng

Inventor after: Hu Wenchao

Inventor after: Wang Wen

Inventor after: Liu Yangfan

Inventor after: Wang He

Inventor after: Shi Qu

Inventor before: Liu Peng

Inventor before: Hu Wenchao

Inventor before: Wang Wen

Inventor before: Liu Yangfan

Inventor before: Wang He

Inventor before: Shi Qu

Inventor before: Shen Xiuhong

Inventor before: Qiao Xu

GR01 Patent grant
GR01 Patent grant