一种指令汇编方法、装置、计算机设备及存储介质

文档序号:7238 发布日期:2021-09-17 浏览:79次 英文

一种指令汇编方法、装置、计算机设备及存储介质

技术领域

本公开涉及计算机

技术领域

,具体而言,涉及一种指令汇编方法、装置、计算机设备及存储介质。

背景技术

汇编语言(Assembly Language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。机器码是指机器指令码,用于指挥计算机应做的操作和操作数地址的一组二进制数。计算机执行汇编语言编写的汇编指令时,需要将汇编指令汇编为计算机可识别的二进制、或十六进制形式的机器码构成的机器指令,根据机器指令实现汇编指令对应的功能,计算机中执行机器指令的单元例如包括中央处理器(central processing unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、人工智能(Artificial Intelligence,AI)芯片等,计算机中将汇编指令汇编为机器指令的单元例如包括部署在计算机设备中的汇编器或者汇编软件。

发明内容

本公开实施例至少提供一种指令汇编方法、装置、计算机设备及存储介质。

第一方面,本公开实施例提供了一种指令汇编方法,包括:获取由汇编语言构成的待汇编指令;对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码;基于所述操作码,从多条转换关系信息中,确定与所述操作码对应的目标转换关系信息;利用所述目标转换关系信息对所述待汇编指令进行汇编处理,得到所述待汇编指令对应的目标机器指令。

这样,通过对待汇编指令进行分词处理,以确定出待汇编指令的操作码,基于待汇编指令的操作码确定该待汇编指令对应的目标转换关系信息,基于目标转换关系信息对待汇编指令进行汇编处理,实现了对构成复杂的汇编指令的快速、精准汇编。

在一种可能的实施方式中,所述待汇编指令,包括:待汇编人工智能AI指令;所述多条转换关系信息包括:第一转换关系信息、和/或第二转换关系信息;所述第一转换关系信息用于将预置的AI指令转换为对应机器指令;所述第二转换关系信息用于将用户构建的AI指令转换为对应机器指令。

这样,用户能够基于自己的使用需求,进行转换关系信息的配置,满足不同用户的不同需求。

在一种可能的实施方式中,所述转换关系信息包括所述第二转换关系信息;所述指令汇编方法还包括:获取用户输入的AI指令、以及对应机器指令;

生成用户输入的AI指令与对应机器指令之间的第二转换关系信息。

这样,用户可以根据实际的应用需要,对汇编器进行配置,使得汇编器能够适用于用户的使用需求,使用更加灵活。

在一种可能的实施方式中,所述获取由汇编语言构成的待汇编指令,包括:获取由汇编语言构成的原始待汇编指令;对所述原始待汇编指令进行信息筛选操作,得到所述待汇编指令。

这样,能去除原始待汇编指令中的无效信息,减少对待汇编指令进行分词处理时的干扰,提高分词处理的准确率。

在一种可能的实施方式中,所述对所述原始待汇编指令进行信息筛选操作,得到所述待汇编指令,包括:基于预设字符,从所述原始待汇编指令中确定无效信息;将所述无效信息从所述原始待汇编指令中筛除,得到所述待汇编指令。

在一种可能的实施方式中,对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码,包括:利用预先训练的分词模型对所述待汇编指令进行分词处理,得到多个字段、以及各个字段分别对应的字段类型;基于所述各个字段分别对应的字段类型,从所述各个字段中确定属于所述操作码的目标字段。

这样,通过分词模型能够快速对汇编指令中的各个字段进行标注,提升汇编的效率。

在一种可能的实施方式中,所述目标转换关系信息包括:目标转换函数、以及对应目标机器指令的目标指令格式;所述利用所述目标转换关系信息对所述待汇编指令进行汇编处理,得到所述待汇编指令对应的目标机器指令,包括:利用所述目标转换函数,将所述待汇编指令转换为目标机器码;基于所述目标机器码、和所述目标指令格式,生成所述的目标机器指令。

这样,能够利用目标指令格式,将不同的待汇编指令转换为便于机器识别的机器指令,提升生成计算机执行目标机器指令的效率。

在一种可能的实施方式中,所述目标机器码包括:二进制的机器码和/或十六进制的机器码。

在一种可能的实施方式中,所述待汇编指令中还携带有操作数;所述目标机器码包括所述操作码对应的第一机器码和所述操作数对应的第二机器码;所述对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码,包括:对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码、以及操作数;所述利用所述目标转换函数,将所述待汇编指令转换为目标机器码,包括:利用所述目标转换函数,将所述待汇编指令中的操作码转换为与所述操作码对应的第一机器码;以及将所述操作数转换为与所述操作数对应的第二机器码。

在一种可能的实施方式中,所述基于所述目标机器码、和所述目标指令格式,生成所述的目标机器指令,包括:基于所述目标指令格式所指示的第一机器码的第一比特位、以及所述第二机器码对应的第二比特位、以及所述第一机器码和所述第二机器码,生成所述目标机器指令。

在一种可能的实施方式中,所述待汇编指令中还携带有参数数据;所述目标机器码包括所述操作码对应的第一机器码和所述参数数据对应的第三机器码;所述对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码,包括:对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码、以及参数数据;所述利用所述目标转换函数,将所述待汇编指令转换为目标机器码,包括:利用所述目标转换函数,将所述待汇编指令中的操作码转换为与所述操作码对应的第一机器码;以及将所述操作数转换为与所述操作数对应的第三机器码。

在一种可能的实施方式中,所述基于所述目标机器码、和所述目标指令格式,生成所述的目标机器指令,包括:基于所述目标指令格式所指示的第一机器码的第一比特位、以及所述第三机器码对应的第三比特位、以及所述第一机器码和所述第三机器码,生成所述目标机器指令。

第二方面,本公开实施例还提供一种指令汇编装置,包括:

获取模块,用于获取由汇编语言构成的待汇编指令;第一处理模块,用于对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码;第二处理模块,用于基于所述操作码,从多条转换关系信息中,确定与所述操作码对应的目标转换关系信息;第三处理模块,用于利用所述目标转换关系信息对所述待汇编指令进行汇编处理,得到所述待汇编指令对应的目标机器指令。

在一种可能的实施方式中,所述待汇编指令,包括:待汇编人工智能AI指令;所述多条转换关系信息包括:第一转换关系信息、和/或第二转换关系信息;所述第一转换关系信息用于将预置的AI指令转换为对应机器指令;所述第二转换关系信息用于将用户构建的AI指令转换为对应机器指令。

一种可能的实施方式中,所述转换关系信息包括所述第二转换关系信息;

所述指令汇编装置还包括:配置模块;

所述配置模块,用于获取用户输入的AI指令、以及对应机器指令;生成用户输入的AI指令与对应机器指令之间的第二转换关系信息。

在一种可能的实施方式中,在获取由汇编语言构成的待汇编指令时,所述获取模块,具体用于获取由汇编语言构成的原始待汇编指令;对所述原始待汇编指令进行信息筛选操作,得到所述待汇编指令。

在一种可能的实施方式中,在对所述原始待汇编指令进行信息筛选操作,得到所述待汇编指令时,所述获取模块,具体用于基于预设字符,从所述原始待汇编指令中确定无效信息;将所述无效信息从所述原始待汇编指令中筛除,得到所述待汇编指令。

在一种可能的实施方式中,在所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码时,所述第一处理模块,具体用于利用预先训练的分词模型对所述待汇编指令进行分词处理,得到多个字段、以及各个字段分别对应的字段类型;基于所述各个字段分别对应的字段类型,从所述各个字段中确定属于所述操作码的目标字段。

在一种可能的实施方式中,所述目标转换关系信息包括:目标转换函数、以及对应目标机器指令的目标指令格式;在利用所述目标转换关系信息对所述待汇编指令进行汇编处理,得到所述待汇编指令对应的目标机器指令时,所述第三处理模块,具体用于利用所述目标转换函数,将所述待汇编指令转换为目标机器码;基于所述目标机器码、和所述目标指令格式,生成所述的目标机器指令。

在一种可能的实施方式中,所述目标机器码包括:二进制的机器码和/或十六进制的机器码。

在一种可能的实施方式中,所述待汇编指令中还携带有操作数;所述目标机器码包括所述操作码对应的第一机器码和所述操作数对应的第二机器码;在对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码时,所述第一处理模块,具体用于对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码、以及操作数;在利用所述目标转换函数,将所述待汇编指令转换为目标机器码时,所述第三处理模块,具体用于利用所述目标转换函数,将所述待汇编指令中的操作码转换为与所述操作码对应的第一机器码;以及将所述操作数转换为与所述操作数对应的第二机器码。

在一种可能的实施方式中,在基于所述目标机器码、和所述目标指令格式,生成所述的目标机器指令时,所述第三处理模块,具体用于基于所述目标指令格式所指示的第一机器码的第一比特位、以及所述第二机器码对应的第二比特位、以及所述第一机器码和所述第二机器码,生成所述目标机器指令。

在一种可能的实施方式中,所述待汇编指令中还携带有参数数据;所述目标机器码包括所述操作码对应的第一机器码和所述参数数据对应的第三机器码;在对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码时,所述第一处理模块,具体用于对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码、以及参数数据;在利用所述目标转换函数,将所述待汇编指令转换为目标机器码时,所述第三处理模块,具体用于利用所述目标转换函数,将所述待汇编指令中的操作码转换为与所述操作码对应的第一机器码;以及将所述操作数转换为与所述操作数对应的第三机器码。

在一种可能的实施方式中,在基于所述目标机器码、和所述目标指令格式,生成所述的目标机器指令时,所述第三处理模块,具体用于基于所述目标指令格式所指示的第一机器码的第一比特位、以及所述第三机器码对应的第三比特位、以及所述第一机器码和所述第三机器码,生成所述目标机器指令。

第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

关于上述指令汇编装置、计算机设备、及计算机可读存储介质的效果描述参见上述指令汇编方法的说明,这里不再赘述。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开实施例所提供的一种指令汇编方法的流程图;

图2示出了本公开实施例所提供的待汇编指令进行分词处理的具体示例图;

图3示出了本公开实施例所提供的一种指令格式示例图;

图4示出了本公开实施例所提供的一种基于目标机器码、和目标指令格式,生成的目标机器指令的具体方法流程图;

图5示出了本公开实施例所提供的一种指令汇编装置的示意图;

图6示出了本公开实施例所提供的一种计算机设备的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

经研究发现,高级语言(High-level programming language)是一种独立于机器,面向过程或对象的语言例如C#、C++、Java等,高级语言主要是相对于汇编语言而言的,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序,一条用高级语言编写的指令可以通过汇编为多条用汇编语言编写的指令来实现对应功能,而计算机执行汇编语言编写的指令时,需要将汇编语言编写的指令汇编为计算机可执行的机器码构成的机器指令,一条汇编语言编写的指令可以汇编为一条机器码编写的机器指令。

在利用汇编器将汇编指令汇编为机器码指令的过程中,编程人员基于共同遵守的代码编写规则编写汇编指令,汇编器能够基于预先确定的汇编指令和机器码指令之间的转换规则,将汇编指令转换为机器码指令。但是针对利用汇编语言编写的人工智能(Artificial Intelligence,AI)指令而言,AI指令构成复杂,且不同于传统的汇编指令,因此,现有的汇编器无法实现对AI指令进行汇编,造成汇编器无法汇编或者汇编错误。

另外,随着神经网络技术的不断发展,AI指令集也快速发展,导致AI指令集中的AI指令数量越来越庞大;而汇编器中的转换规则更新速度慢,且对于不同用户而言,其所需要的AI指令也有所区别,因此当前汇编器无法满足对用汇编语言编写的AI指令进行汇编。

基于上述研究,本公开提供了一种指令汇编方法、装置、计算机设备及存储介质,通过对待汇编指令进行分词处理,以确定出待汇编指令的操作码,基于待汇编指令的操作码确定该待汇编指令对应的目标转换关系信息,基于目标转换关系信息对待汇编指令进行汇编处理,实现了对构成复杂的汇编指令的快速、精准汇编。

另外,本公开实施例中的转换关系信息,包括第一转换关系信息和/或第二转换关系信息;其中,第一转换关系信息用于将预置的AI指令转换为对应机器指令;所述第二转换关系信息用于将用户构建的AI指令转换为对应机器指令。其中,用户构建的AI指令,例如为用户基于计算机硬件能够实现的功能、在汇编器原有的指令基础上,重新构建的AI指令。与AI指令对应的机器指令是否能够被计算机执行,取决于计算机硬件的具体功能。

在具体实施中,转换关系信息包括:机器码、以及指令格式。其中,机器码包括:操作码、操作数、以及参数数据中至少一项分别对应的机器码;机器码为计算机可识别的标识码,例如在汇编指令中,操作码用十进制数或者英文字母来表示;但计算机无法直接识别十进制数或者英文字母;与操作码对应的机器码则为能够被计算机所识别的二进制数、或者十六进制数。

指令格式定义了操作码、操作数、以及参数数据中至少一项分别对应的机器码在于汇编指令对应的机器指令中的具体位置。在基于机器码和指令格式,生成机器指令的时候,将机器码放置于中对应机器指令中指令格式所指示的位置处。

用户在计算机设备上部署汇编器之后,可以基于计算机所能够实现的具体功能,对汇编器进行配置,在配置时,可以输入汇编指令、以及对应的机器指令,生成AI指令和对应机器指令之间的第二转换关系信息。

包括了将预置的AI指令转换为对应机器指令的转换关系信息,和/或,将用户构建的AI指令转换为对应机器指令的转换关系信息,因而,用户能够基于自己的使用需求,进行转换关系信息的配置,满足不同用户的不同需求。

针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

为便于对本实施例进行理解,首先对本公开实施例所公开的一种指令汇编方法进行详细介绍,本公开实施例所提供的指令汇编方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该指令汇编方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。

下面对本公开实施例提供的一些名词加以解释说明:

本公开实施例所述的待汇编指令例如包括汇编语言编写的AI指令、普通指令等。

本公开实施例所述的多条转换关系信息例如包括:将预置的AI指令转换为对应机器指令的转换关系信息,和/或,将用户构建的AI指令转换为对应机器指令的转换关系信息;其中,预置的AI指令转换为对应机器指令的转换关系信息例如包括:开发人员设置的较为通用的AI指令和对应机器指令的转换关系信息;用户构建的AI指令转换为对应机器指令的转换关系信息例如包括用户在实际使用过程中基于自己的需求添加的AI指令和对应机器指令的转换关系信息;本公开实施例提供的汇编器例如向用户提供配置接口,用于用户添加AI指令和对应机器指令的转换关系信息。

下面对本公开实施例提供的指令汇编方法加以说明。

参见图1所示,为本公开实施例提供的指令汇编方法的流程图,所述方法包括步骤S101~S104,其中:

S101:获取由汇编语言构成的待汇编指令。

在具体实施中,获取由汇编语言构成的待汇编指令例如获取由汇编语言构成的原始待汇编指令;对原始待汇编指令进行信息筛选操作,得到待汇编指令。

此处,原始待汇编指令中例如包含用户在使用汇编语言编写指令时,对指令的一些注释信息;这些注释信息仅仅用于辅助原始待汇编指令的理解,并不参与指令的执行过程,在对指令进行汇编处理时,这些注释信息属于无效信息,因此在获取原始待汇编指令后,可以对原始指令进行信息筛选操作,得到待汇编指令,例如基于预设字符,从所述原始待汇编指令中确定无效信息;将无效信息从原始待汇编指令中筛除,得到待汇编指令。

示例性的,预设字符例如包括下述至少一种:特殊符号、特殊字母等;确定与预设字符在同一行且在预设字符之后的信息为无效信息,从原始指令中删除确定的无效信息,得到待汇编指令。

这样,能去除原始待汇编指令中的无效信息,减少对待汇编指令进行分词处理时的干扰,提高分词处理的准确率。

承接上述S101,本公开实施例所提供的指令汇编方法,还包括:

S102:对待汇编指令进行分词处理,得到待汇编指令中的操作码。

在具体实施中,待汇编指令例如可以分为多个字段,操作码例如为待汇编指令中计算机程序所规定的要执行操作的那一部分字段,也即指令的序列号,用于告诉CPU执行哪一条指令;操作码例如包括:算数逻辑指令、控制指令、加载存储指令等。

此处,对待汇编指令进行分词处理,得到待汇编指令的中的操作码例如对待汇编指令进行分词处理,得到多个字段、以及各个字段分别对应的字段类型;基于各个字段分别对应的字段类型,从各个字段中确定属于操作码的目标字段。

另外,待汇编指令中除操作码之外,例如还包括操作数和/或、参数数据;其中,操作数例如为待汇编指令中被操作数据、或者被操作数据的存储地址对应的字段,操作数例如包括立即数、寄存器等;参数数据例如包括数据类型、数据位宽;示例性的,一条待汇编指令“sadd.s16%param30,%tid.x,0x7”,其中,字段“sadd”为操作码,字段“s16”为参数数据,代表数据类型是有符号数据,数据位宽为16位,字段“%param30”、“%tid.x”、“0x7”都为操作数。

因此,在对待汇编指令进行分词处理,得到待汇编指令的中的操作码时,例如还包括下述(1)~(3)至少一种处理方式:

(1):针对待汇编指令还包括操作数的情况,对待汇编指令进行分词处理,得到所述待汇编指令的中的操作码、以及操作数。

示例性的,对待汇编指令进行分词处理,得到多个字段、以及各个字段分别对应的字段类型;基于各个字段分别对应的字段类型,从各个字段中确定属于操作码的目标字段、以及属于操作数的目标字段。

(2):针对待汇编指令还包括参数数据的情况,对待汇编指令进行分词处理,得到待汇编指令的中的操作码、以及参数数据。

示例性的,对待汇编指令进行分词处理,得到多个字段、以及各个字段分别对应的字段类型;基于各个字段分别对应的字段类型,从各个字段中确定属于操作码的目标字段、以及属于参数数据的目标字段。

(3):针对待汇编指令还包括操作数、以及参数数据的情况,对待汇编指令进行分词处理,得到待汇编指令的中的操作码、操作数、以及参数数据。

示例性的,对待汇编指令进行分词处理,得到多个字段、以及各个字段分别对应的字段类型;基于各个字段分别对应的字段类型,从各个字段中确定属于操作码的目标字段、属于操作数的目标字段、以及属于参数数据的目标字段。

另外,例如可以采用下述(a)~(b)任一种方法对待汇编指令进行分词处理:

(a)利用预先训练的分词模型对待汇编指令进行分词处理,得到待汇编指令中的操作码。

分词模型例如包括:马尔可夫模型(Hidden Markov Model,HMM)、条件随机域模型(Conditional Random Field,CRF)、结构化感知器(structure perceptron)等至少一种。

(b)基于字符串匹配的分词方法,例如包括:正向最大匹配、逆向最大匹配、双向最大匹配。

示例性的,针对正向最大匹配,从左到右将待汇编指令的所有字符作为匹配字符,将字符与数据库中存储的操作码、操作数、以及参数数据的对应的字符进行比对,若匹配成功,则将所有的字符作为一个词切分出来若匹配不成功,则将所有的字符的最右边的一个字符去掉,再进行匹配,重复上述过程,直至切分完整个待汇编指令为止,例如切分“sadd.s16%param30,%tid.x,0x7”,取“sadd.s16%param30,%tid.x,0x7”与数据库中存储的操作码、操作数、以及参数数据的对应的字符进行比对,如果比对不成功,取“sadd.s16%param30,%tid.x,0x”与数据库中存储的操作码、操作数、以及参数数据的对应的字符进行比对,直至“sadd”比对成功,确定操作码为“sadd”。

另外,逆向最大匹配只是从右到左将待汇编指令的所有字符作为匹配字符,匹配不成功时,去掉最左边的字符,其他操作与正向最大匹配类似,此处不再赘述;双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,从而决定正确的分词方法。

基于字符串匹配的分词方法的优点是速度快,实现简单;但是对未存储在数据库中的字符分词不够准确。

基于对待汇编指令的分词处理,对待汇编指令中的操作码、操作数、参数数据对应的字段进行标注,以便区分待汇编指令中每一字段的字段类型。如图2所示,为本公开实施例中提供的一种待汇编指令进行分词处理的具体示例,包括:

S201:对待汇编指令进行分词处理,得到多个字段;

S202:基于每一字段的字段类型对该多个字段进行分类,得到属于操作码的目标字段、属于操作数的目标字段、以及属于参数数据的目标字段中的至少一种;

S203:标注每一目标字段。

示例性的,标注得到的操作码例如包括:算数逻辑指令的操作码、控制指令的逻辑码、或者是加载存储指令的逻辑码;操作数例如包括:立即数或者寄存器的地址信息。

承接上述S102,本公开实施例提供的指令汇编方法,还包括:

S103:从多条转换关系信息中,确定与操作码对应的目标转换关系信息。

此处,多条转换关系信息中每一转换关系信息都对应于一个操作码,在存储的时候,每一转换关系信息都与对应的操作码关联存储,因此基于操作,可以确定该操作码对应的目标转换关系信息。

其中,转换关系信息中例如包括:转换函数、以及该转换关系信息对应的待汇编指令汇编后的机器指令对应的指令格式,不同的待汇编指令的指令格式不同;转换函数可以将该函数对应的汇编语言编写的待汇编指令转换为该待汇编指令对应的机器码;指令格式例如包括待汇编指令对应的机器指令中的各个机器码对应的比特位信息。

如图3所示,为本公开实施例提供的一种指令格式示例图,表征该机器码一个有64个比特位,前8个比特位,也即第63个比特位到第56个比特位放置待汇编指令中操作码对应的机器码,第47到第40个比特位放置待汇编指令中第一个操作数对应的机器码,第39到第32个比特位放置待汇编指令中第二个操作数对应的机器码,第31到第24个比特位放置待汇编指令中第三个操作数对应的机器码;第55到第48个比特位、以及第23到第0个比特位放置待汇编指令中参数数据对应的机器码。

另外,在确定目标转换关系信息时,例如还可以检测待汇编指令是否存在语法问题,在待汇编指令不存在语法问题的情况下,跳转至S103;在待汇编指令存在语法问题的情况下,停止对待汇编指令分词处理,并生成告警信息。

此处,待汇编指令存在语法问题例如包括:多个转换关系信息中不包含操作码对应的目标转换关系信息。

承接上述S103,本公开实施例提供的指令汇编方法,还包括:

S104:利用目标转换关系信息对待汇编指令进行汇编处理,得到待汇编指令对应的目标机器指令。

在具体实施中,目标转换关系信息例如包括目标转换函数、以及对应目标机器指令的目标指令格式,利用目标转换关系信息对待汇编指令进行转换处理,得到待汇编指令对应的目标机器指令时,例如利用目标转换函数,将待汇编指令转换为目标机器码;基于目标机器码、和目标指令格式,生成的目标机器指令。

目标机器码例如包括二进制的机器码和/或十六进制的机器码。

在如上述(1)所述的情况下,待汇编指令中包括了操作码和操作数,目标机器码包括操作码对应的第一机器码和操作数对应的第二机器码,在利用目标转换函数,将待汇编指令转换为目标机器码时,例如利用目标转换函数,将待汇编指令中的操作码转换为与操作码对应的第一机器码;以及将操作数转换为与操作数对应的第二机器码;在基于目标机器码、和目标指令格式,生成目标机器指令时,例如基于目标指令格式所指示的第一机器码的第一比特位、以及第二机器码对应的第二比特位、以及第一机器码和第二机器码,生成目标机器指令,例如将第一机器放置到第一比特位,将第二机器码放置到第二比特位,得到目标机器指令。

在如上述(2)所述的情况下,待汇编指令中包括了操作码、以及参数数据,目标机器码包括操作码对应的第一机器码和参数数据对应的第三机器码,在利用目标转换函数,将待汇编指令转换为目标机器码时,例如利用目标转换函数,将待汇编指令中的操作码转换为与操作码对应的第一机器码;以及将操作数转换为与操作数对应的第三机器码;在基于目标机器码、和目标指令格式,生成的目标机器指令时,例如基于目标指令格式所指示的第一机器码的第一比特位、以及第三机器码对应的第三比特位、以及第一机器码和第三机器码,生成目标机器指令,例如将第一机器放置到第一比特位,将第三机器码放置到第三比特位,得到目标机器指令。

在如上述(3)所述的情况下,待汇编指令中包括了操作码、操作数、以及参数数据,目标机器码包括操作码对应的第一机器码、操作数对应的第二机器码、以及参数数据对应的第三机器码,在利用目标转换函数,将待汇编指令转换为目标机器码时,例如利用目标转换函数,将待汇编指令中的操作码转换为与操作码对应的第一机器码、将操作数转换为与操作数对应的第二机器码、以及将操作数转换为与操作数对应的第三机器码;在基于目标机器码、和目标指令格式,生成的目标机器指令时,例如基于目标指令格式所指示的第一机器码的第一比特位、以及第三机器码对应的第三比特位、第二机器码对应的第二比特位、以及第一机器码和第三机器码,生成目标机器指令,例如将第一机器放置到第一比特位,将第二机器码放置到第二比特位,将第三机器码放置到第三比特位,得到目标机器指令。

另外,在将第一机器码、第二机器码、第三机器码放置在对应的比特位时,先从目标转换函数转换的机器码中确定出第一机器、第二机器码,第三机器码,然后将第一机器码、第二机器码、第三机器码放置在对应的比特位;具体的,从目标转换函数转换的机器码中确定出第一机器码、第二机器码,第三机器码时例如可以基于对待汇编指令进行分词处理时对每个字段的标注信息,确定操作码对应的第一机器码、操作数对应的第二机器码、参数数据对应的第三机器码。

由于不同的AI指令具有不同的构成,也即,某些AI指令中,仅包括操作码;某些AI指令中,既包括操作码、又包括了操作数和参数数据中至少一种,因此,如图4所示,本公开实施例还提供了一种基于目标机器码、和目标指令格式,生成的目标机器指令的具体方法,包括:

S401:从目标机器码中基于操作码的标注信息确定第一机器码,将第一机器码放置到目标机器指令中的第一比特位。

S402:基于分词处理的结果,判断待汇编指令中是否包含操作数的标注信息,如果是,跳转至步骤S403,如果否,则跳转至步骤S404。

S403:从目标机器机器码中基于操作数的标注信息确定第二机器码,将第二机器码放置到目标机器指令中的第二比特位。

S404:判断待汇编指令中是否包含参数数据的标注信息,如果是,跳转至步骤S405,如果否,则跳转至步骤S406。

S405:从目标机器机器码中基于参数数据的标注信息确定第三机器码,将第三机器码放置到目标机器指令中的第三比特位。

S406:基于第一比特位、第二比特位、第三比特位的目标机器码放置结果,生成目标机器指令。

本公开实施例所述的第一比特位、第二比特位、第三比特位不是指一个比特位,而是一个比特位的范围,例如目标机器指令有64个比特位,第一比特位包括:前8个比特位,也即第63个比特位到第56个比特位;第二比特位包括:第47到第24个比特位;第三比特位包括:第55到第48个比特位、以及第23到第0个比特位。

本公开通过对待汇编指令进行分词处理,以确定出待汇编指令的操作码,基于待汇编指令的操作码确定该待汇编指令对应的目标转换关系信息,基于目标转换关系信息对待汇编指令进行汇编处理,实现了对构成复杂的汇编指令的快速、精准汇编。

另外,本公开实施例中的转换关系信息,包括了将预置的AI指令转换为对应机器指令的转换关系信息,和/或,将用户构建的AI指令转换为对应机器指令的转换关系信息,因而,用户能够基于自己的使用需求,进行转换关系信息的配置,满足不同用户的不同需求。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与指令汇编方法对应的指令汇编装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述指令汇编方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参照图5所示,为本公开实施例提供的一种指令汇编装置的示意图,所述装置包括:获取模块501、第一处理模块502、第二处理模块503、以及第三处理模块504;其中,

获取模块501,用于获取由汇编语言构成的待汇编指令;

第一处理模块502,用于对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码;

第二处理模块503,用于基于所述操作码,从多条转换关系信息中,确定与所述操作码对应的目标转换关系信息;

第三处理模块504,用于利用所述目标转换关系信息对所述待汇编指令进行汇编处理,得到所述待汇编指令对应的目标机器指令。

在一种可能的实施方式中,所述待汇编指令,包括:待汇编人工智能AI指令;所述多条转换关系信息包括:第一转换关系信息、和/或第二转换关系信息;所述第一转换关系信息用于将预置的AI指令转换为对应机器指令;所述第二转换关系信息用于将用户构建的AI指令转换为对应机器指令。

一种可能的实施方式中,所述转换关系信息包括所述第二转换关系信息;

所述指令汇编装置还包括:配置模块505;

所述配置模块505,用于获取用户输入的AI指令、以及对应机器指令;生成用户输入的AI指令与对应机器指令之间的第二转换关系信息。

在一种可能的实施方式中,在获取由汇编语言构成的待汇编指令时,所述获取模块,具体用于获取由汇编语言构成的原始待汇编指令;对所述原始待汇编指令进行信息筛选操作,得到所述待汇编指令。

在一种可能的实施方式中,在对所述原始待汇编指令进行信息筛选操作,得到所述待汇编指令时,所述获取模块,具体用于基于预设字符,从所述原始待汇编指令中确定无效信息;将所述无效信息从所述原始待汇编指令中筛除,得到所述待汇编指令。

在一种可能的实施方式中,在所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码时,所述第一处理模块,具体用于利用预先训练的分词模型对所述待汇编指令进行分词处理,得到多个字段、以及各个字段分别对应的字段类型;基于所述各个字段分别对应的字段类型,从所述各个字段中确定属于所述操作码的目标字段。

在一种可能的实施方式中,所述目标转换关系信息包括:目标转换函数、以及对应目标机器指令的目标指令格式;在利用所述目标转换关系信息对所述待汇编指令进行汇编处理,得到所述待汇编指令对应的目标机器指令时,所述第三处理模块,具体用于利用所述目标转换函数,将所述待汇编指令转换为目标机器码;基于所述目标机器码、和所述目标指令格式,生成所述的目标机器指令。

在一种可能的实施方式中,所述目标机器码包括:二进制的机器码和/或十六进制的机器码。

在一种可能的实施方式中,所述待汇编指令中还携带有操作数;所述目标机器码包括所述操作码对应的第一机器码和所述操作数对应的第二机器码;在对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码时,所述第一处理模块,具体用于对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码、以及操作数;在利用所述目标转换函数,将所述待汇编指令转换为目标机器码时,所述第三处理模块,具体用于利用所述目标转换函数,将所述待汇编指令中的操作码转换为与所述操作码对应的第一机器码;以及将所述操作数转换为与所述操作数对应的第二机器码。

在一种可能的实施方式中,在基于所述目标机器码、和所述目标指令格式,生成所述的目标机器指令时,所述第三处理模块,具体用于基于所述目标指令格式所指示的第一机器码的第一比特位、以及所述第二机器码对应的第二比特位、以及所述第一机器码和所述第二机器码,生成所述目标机器指令。

在一种可能的实施方式中,所述待汇编指令中还携带有参数数据;所述目标机器码包括所述操作码对应的第一机器码和所述参数数据对应的第三机器码;在对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码时,所述第一处理模块,具体用于对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码、以及参数数据;在利用所述目标转换函数,将所述待汇编指令转换为目标机器码时,所述第三处理模块,具体用于利用所述目标转换函数,将所述待汇编指令中的操作码转换为与所述操作码对应的第一机器码;以及将所述操作数转换为与所述操作数对应的第三机器码。

在一种可能的实施方式中,在基于所述目标机器码、和所述目标指令格式,生成所述的目标机器指令时,所述第三处理模块,具体用于基于所述目标指令格式所指示的第一机器码的第一比特位、以及所述第三机器码对应的第三比特位、以及所述第一机器码和所述第三机器码,生成所述目标机器指令。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

本公开实施例还提供了一种计算机设备,如图6所示,为本公开实施例提供的计算机设备结构示意图,包括:

处理器61和存储器62;所述存储器62存储有处理器61可执行的机器可读指令,处理器61用于执行存储器62中存储的机器可读指令,所述机器可读指令被处理器61执行时,处理器61执行下述步骤:

获取由汇编语言构成的待汇编指令;

对所述待汇编指令进行分词处理,得到所述待汇编指令的中的操作码;

基于所述操作码,从多条转换关系信息中,确定与所述操作码对应的目标转换关系信息;

利用所述目标转换关系信息对所述待汇编指令进行汇编处理,得到所述待汇编指令对应的目标机器指令。

上述存储器62包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器61中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器61通过内存621与外部存储器622进行数据交换。

上述指令的具体执行过程可以参考本公开实施例中所述的指令汇编方法的步骤,此处不再赘述。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的指令汇编方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的指令汇编方法的步骤,具体可参见上述方法实施例,在此不再赘述。

其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:电能表通讯数据压缩方法与系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!