CN109947432B - 汇编程序处理方法及相关装置 - Google Patents
汇编程序处理方法及相关装置 Download PDFInfo
- Publication number
- CN109947432B CN109947432B CN201910244796.8A CN201910244796A CN109947432B CN 109947432 B CN109947432 B CN 109947432B CN 201910244796 A CN201910244796 A CN 201910244796A CN 109947432 B CN109947432 B CN 109947432B
- Authority
- CN
- China
- Prior art keywords
- assembler
- instruction
- machine code
- assembly
- instruction set
- 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.)
- Active
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本申请实施例公开了一种汇编程序处理方法及相关装置,方法包括:在检测到针对第一汇编程序的解析请求时,处理所述第一汇编程序得到第一汇编元素序列,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数;检测所述第一汇编程序是否正确;若检测出所述第一汇编程序正确,则调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码;执行所述第一机器码。本申请实施例有利于提高电子设备解析汇编程序的稳定性和准确度。
Description
技术领域
本申请涉及电子设备技术领域,具体涉及一种汇编程序处理方法及相关装置。
背景技术
汇编器技术方案基本都是将指令集格式固化在汇编器源码中。当指令集需要改动时候,需要在代码中更新指令集,然后重新编译汇编器,这使得汇编器的开发需要软件工程师和芯片前端工程师协同工作,芯片前端工程师需要及时将指令集的更新告知软件工程师,且软件工程师需要将指令集更新到代码中去,整个流程需要传递的过程较长,增加了汇编器出风险的可能性。
发明内容
本申请实施例提供了一种汇编程序处理方法及相关装置,以期提高电子设备解析汇编程序的稳定性和准确度。
第一方面,本申请实施例提供一种汇编程序处理方法,应用于电子设备,所述电子设备设置有汇编器源码和指令集描述文件,所述汇编器源码存储于所述电子设备的第一存储空间,所述指令集描述文件存储于所述电子设备的第二存储空间,所述第一存储空间和所述第二存储空间不同,所述指令集描述文件包括指令集,且所述第二存储空间支持文件更新和调用;所述方法包括:
在检测到针对第一汇编程序的解析请求时,处理所述第一汇编程序得到第一汇编元素序列,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数;
检测所述第一汇编程序是否正确;
若检测出所述第一汇编程序正确,则调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码;
执行所述第一机器码。
第二方面,本申请实施例提供一种汇编程序处理装置,应用于电子设备,所述电子设备设置有汇编器源码和指令集描述文件,所述汇编器源码存储于所述电子设备的第一存储空间,所述指令集描述文件存储于所述电子设备的第二存储空间,所述第一存储空间和所述第二存储空间不同,所述指令集描述文件包括指令集,且所述第二存储空间支持文件更新和调用;所述装置包括处理单元和通信单元,其中,
所述处理单元,用于在检测到针对第一汇编程序的解析请求时,处理所述第一汇编程序得到第一汇编元素序列,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数;以及用于检测所述第一汇编程序是否正确;以及用于若检测出所述第一汇编程序正确,则通过所述通信单元调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码;以及用于执行所述第一机器码。
第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面任一方法中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中,电子设备在检测到针对第一汇编程序的解析请求时,处理第一汇编程序得到第一汇编元素序列,第一汇编元素序列包括多个汇编元素,多个汇编元素包括操作码和操作数,检测第一汇编程序是否正确,若通过汇编器检测出第一汇编程序正确,则调用指令集描述文件的指令集,并解析第一汇编元素序列中的汇编元素,得到第一汇编程序对应的第一机器码,执行第一机器码。由于电子设备设置有汇编器源码和指令集描述文件,汇编器源码存储于电子设备的第一存储空间,指令集描述文件存储于电子设备的第二存储空间,第一存储空间和第二存储空间不同,指令集描述文件包括指令集,且第二存储空间支持文件更新和调用,故而汇编程序每次可以动态加载最新的指令集,并进行汇编器的工作,实现了将指令集的修改与汇编器的改动解耦,软件工程师和芯片前端工程师只要按约定的指令集格式开展工作就行,避免因更新不及时而导致汇编器沿用旧指令集生成异常机器码的情况出现,提高汇编器的稳定性和准确度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种电子设备采集指纹的示意图;
图2a是本申请实施例提供的一种汇编程序处理方法的流程示意图;
图2b是本申请实施例提供的一种指令子集的组成示意图;
图2c是本申请实施例提供的一种第一汇编语言的编译示例图;
图2d是本申请实施例提供的另一种第一汇编语言的编译示例图;
图2e是本申请实施例提供的另一种第一汇编语言的编译示例图;
图2f是本申请实施例提供的另一种第一汇编语言的编译示例图;
图3是本申请实施例提供的另一种汇编程序处理方法的流程示意图;
图4是本申请实施例提供的另一种汇编程序处理方法的流程示意图;
图5本申请实施例提供的一种电子设备的结构示意图;
图6本申请实施例提供的一种汇编程序处理装置的功能单元组成框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,图1为一个电子设备100的示意图,该电子设备100包括处理器110、存储器120和通信接口130,其中,电子设备100的存储器120中存储有汇编器源码和指令集描述文件,所述汇编器源码存储于所述电子设备100的第一存储空间,所述指令集描述文件存储于所述电子设备100的第二存储空间,所述第一存储空间和所述第二存储空间不同,所述指令集描述文件包括指令集,且所述第二存储空间支持文件更新和调用;具体的,芯片前端工程师可以按照指令集描述文件所约定的格式对指令集进行更新(更新操作包括增加新的指令或者修改原有指令),电子设备110会始终保存最新的指令集,从而软件工程师使用电子设备110中的汇编器(汇编器功能由所述汇编器源码实现)进行汇编操作时,电子设备110可以根据最新的指令集对汇编程序进行解析。本申请实施例所涉及到的电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(User Equipment,UE),移动台(MobileStation,MS),终端设备(terminal device)等等。
目前,汇编器技术方案是将指令集格式固化在汇编器源码中。当指令集需要改动时候,需要在代码中更新指令集,然后重新编译汇编器,这使得汇编器的开发需要软件工程师和芯片前端工程师协同工作,芯片前端工程师需要及时将指令集的更新告知软件工程师,且软件工程师需要将指令集更新到代码中去,整个流程需要传递的过程较长,增加了汇编器出风险的可能性。
基于此,本申请实施例提出一种汇编程序处理方法以解决上述问题,下面对本申请实施例进行详细介绍。
请参阅图2a,图2a是本申请实施例提供了一种汇编程序处理方法的流程示意图,应用于如图1所示的电子设备,如图所示,本汇编程序处理方法包括:
S201,电子设备在检测到针对第一汇编程序的解析请求时,处理所述第一汇编程序得到第一汇编元素序列,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数;
其中,汇编语言是一种以处理器指令系统为基础的低级语言,采用助记符表达指令操作码(又称为操作码),采用标识符表示指令操作数(又称为操作数)。作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码(又称为机器码)。汇编程序即采用汇编语言所规定的语法规则构成的计算机程序,汇编元素是指拆分汇编程序得到的操作码或操作符。
此外,第一汇编程序的操作码还用于表示指令名,根据该指令名能够查找到指令集中与该指令名对应的指令子集,该指令子集具体包括如图2b所示的多个指令信息,即指令名name、指令格式instruction format、指令缩写op、指令参数的类型field range和操作数与指令参数之间的映射关系mapping。
其中,指令名name的描述内容例如可以是subbvv.op1;指令格式的描述内容用于标识机器码的构成字段,以及每个字段的二进制区间,所述构成字段包括以下指令参数至少一种:指令功能func参数、立即数操作imm参数、64位pr寄存器rp参数、512位vr寄存器rt参数、512位vr寄存器rs参数、512位vr寄存器rd参数、opc参数、opt参数、保留位reserved参数;指令缩写的描述内容用于表示指令有缩写的情况,可以是i8s/i16s/i32s/i64s/i8t/i16t/i32t/i64t中的任意一个;指令参数的类型field range用于表示指令操作的类型,如rd、rs、rt表示512bit的vr寄存器,rp表示64bit的pr寄存器;操作数与指令参数之间的映射关系mapping用于表示汇编程序的操作数与上述指令参数之间的对应关系。
其中,所述指令功能func参数用于表示指令的功能,同一类指令用func区别细微的功能差异,比如有些指令只能处理有符合数而有些只能处理无符号数。立即数操作imm参数用于表示针对对应操作数的二进制数值的整体取值或者部分比特位的取值(如imm[a,b],则需要截取对应操作数的二进制数值的a到b的二进制区间)。
S202,所述电子设备检测所述第一汇编程序是否正确;
S203,所述电子设备若检测出所述第一汇编程序正确,则调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码;
其中,所述指令集包含操作码、操作数与原始机器码的各个二进制区间之间的转换规则,原始机器码为32位的二进制数值,如000 0000 00000 00000 00000 000000 0000,操作码可以对应该原始机器码的第29至第31比特位的二进制区间,操作数可以对应第0至第28比特位的二进制区间中的部分区间。
S204,所述电子设备执行所述第一机器码。
其中,机器码是电子设备的可执行代码,通过执行该可执行代码以完成各类功能的计算和逻辑判断。
可以看出,本申请实施例中,电子设备在检测到针对第一汇编程序的解析请求时,处理第一汇编程序得到第一汇编元素序列,第一汇编元素序列包括多个汇编元素,多个汇编元素包括操作码和操作数,检测第一汇编程序是否正确,若通过汇编器检测出第一汇编程序正确,则调用指令集描述文件的指令集,并解析第一汇编元素序列中的汇编元素,得到第一汇编程序对应的第一机器码,执行第一机器码。由于电子设备设置有汇编器源码和指令集描述文件,汇编器源码存储于电子设备的第一存储空间,指令集描述文件存储于电子设备的第二存储空间,第一存储空间和第二存储空间不同,指令集描述文件包括指令集,且第二存储空间支持文件更新和调用,故而汇编程序每次可以动态加载最新的指令集,并进行汇编器的工作,实现了将指令集的修改与汇编器的改动解耦,软件工程师和芯片前端工程师只要按约定的指令集格式开展工作就行,避免因更新不及时而导致汇编器沿用旧指令集生成异常机器码的情况出现,提高汇编器的稳定性和准确度。
在一个可能的示例中,所述电子设备调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码,包括:所述电子设备根据所述第一汇编元素序列的操作码查询所述指令集描述文件的所述指令集,得到所述操作码对应的第一指令子集,所述第一指令子集包含支持动态更新的指令格式,所述指令格式包括指令功能func参数和所述指令功能参数所对应的机器码的二进制区间;检测所述第一指令子集的指令缩写的描述内容;若检测到所述指令缩写的描述内容为预设缩写标识序列中的第一缩写标识,则根据所述第一缩写标识在所述预设缩写标识序列中的排序,解析所述指令缩写并将解析结果填入所述指令功能参数对应的原始机器码的二进制区间;逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的所述原始机器码的二进制区间,得到第一机器码。
其中,所述预设缩写标识序列为i8s/i16s/i32s/i64s/i8t/i16t/i32t/i64t,例如第一缩写标识为i16t,该i16t在预设缩写标识序列中的排序为第6个,若指令功能参数对应的原始机器码的二进制区间为32位二进制区间中的第29至第31位,则对应二进制数值为011。
可见,本示例中,电子设备针对第一汇编程序,先进行汇编元素的拆分,按照汇编语法创建第一汇编元素序列,进而逐个解析序列中的每个汇编元素,避免遗漏,且每个汇编元素均是按照当前操作码对应的指令子集所约束的转换规则进行解析,故而可以避免因指令集更新不及时而导致电子设备沿用旧指令集进而造成编译错误机器码的情况发生,有利于提高电子设备进行汇编程序编译的准确度和稳定性。
在一个可能的示例中,所述方法还包括:所述电子设备若检测到所述指令缩写的描述内容为无,则逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的原始机器码的二进制区间,得到第一机器码。
其中,由于预设缩写标识序列为i8s/i16s/i32s/i64s/i8t/i16t/i32t/i64t,也就是说,若当前的指令缩写的描述内容不属于上述任意一个,则可以用N/A表示此种情况。
可见,本示例中,电子设备针对指令缩写的描述内容为无的情况,可以沿用约束对应二进制区间的默认值,提高编译效率。
在一个可能的示例中,所述电子设备逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的所述原始机器码的二进制区间,得到第一机器码,包括:所述电子设备检测所述第一汇编元素序列的每个操作数的类型;若检测到所述每个操作数的类型为寄存器,则解析所述每个操作数的所代表的二进制数值,并根据指令子集中的指令参数与操作数之间的映射关系将所述二进制数值填入所述每个操作数对应的原始机器码的二进制区间。
其中,寄存器类型的指令参数包括64位pr寄存器rp参数、512位vr寄存器rt参数、512位vr寄存器rs参数、512位vr寄存器rd参数。由于指令参数的描述内容会限定当前指令参数对应于原始机器码的二进制区间,故而电子设备能够根据指令参数与操作数之间的映射关系,确定当前操作数对应的指令参数,并根据该指令参数的描述内容确定当前操作数的二进制数值对应于原始机器码的二进制区间。
可见,本示例中,电子设备针对寄存器类型的操作数,可以直接解析每个操作数所代表的二进制数值,并根据指令参数与操作数之间的映射关系将所述二进制数值填入所述每个操作数对应的原始机器码的二进制区间,由于上述映射关系实时更新和调用,故而可以避免因映射关系更新不及时而造成操作数的解析错误的问题发生,提高电子设备解析汇编程序中的操作数的准确度。
在一个可能的示例中,所述方法还包括:所述电子设备若检测到所述每个操作数的类型为立即数,则从所述第一汇编元素序列中找到需要填入立即数的一个或多个目标指令参数;
检测所述一个或多个目标指令参数中的每个目标指令参数是否需要进行截取操作;
若检测到所述每个目标指令参数需要进行截取操作,则解析所述每个操作数所代表的二进制数值,根据所述每个目标指令参数所限定截取的比特位截取所述二进制数值中的对应比特位,并根据所述第一个目标指令参数的描述内容将截取的所述比特位填入对应的原始机器码的二进制区间;
若检测到所述每个目标指令参数不需要进行截取操作,则解析所述每个操作数所代表的二进制数值,并将所述二进制数值填入对应的原始机器码的二进制区间。
其中,所述目标指令参数为imm参数。
可见,本示例中,针对操作数为立即数的情形,电子设备会根据该立即数是否需要进行数值截取而分情况处理,针对不需要数值截取的情况,可以直接将当前操作数的二进制数值填入当前目标指令参数对应于原始机器码的二进制区间,针对需要数值截取的情况,可以遍历指令格式中所包含的所有操作数,并将需要数值截取的一个或多个目标指令参数imm均找出来,并根据每个目标指令参数的截取区间进行数值截取以及数值填入。有利于提高电子设备解析立即数类型的操作数的效率和准确度。
在一个可能的示例中,所述电子设备处理所述第一汇编程序得到第一汇编元素序列,包括:所述电子设备逐行读取所述第一汇编程序,以逗号或空格进行元素切割得到多个汇编元素;根据所述多个汇编元素和每个汇编元素在所述第一汇编程序中的语法位置,创建第一汇编元素序列,所述每个汇编元素的序列位置和语法位置是一一对应的。
可见,本示例中,由于汇编语言的语法约束不同汇编元素之间通过逗号或空格分割,故而电子设备能够利用该规则进行汇编元素拆分,提高汇编元素拆分效率。
在一个可能的示例中,所述电子设备检测所述第一汇编程序是否正确,包括:所述电子设备检测所述第一汇编程序的操作码是否存在;若存在,则检测所述第一汇编程序的每个操作数的格式、类型和长度是否符合预设要求;若不存在,则确定所述第一汇编程序错误;若符合,则确定所述第一汇编程序正确;若不符合,则确定所述第一汇编程序错误。
其中,pr参数的取值范围为pr0-pr15,vr参数的取值范围分为两类,针对两段式的vr参数,其取值范围为vr0.0-vr7.3,针对三段式的vr参数,其取值范围为vr0.0-vr7.33,针对立即数,支持有符号和无符号的,对应取值范围不同,有些数字需要低位对齐,如4或16的倍数。
可见,本示例中,电子设备能够基于预设语法规则检测操作码和操作数的合法性,避免针对错误汇编程序解析得到错误机器码,提高检测准确度和稳定性。
下面结合一些示例对本申请进行详细说明。
如图2c所示,假设第一汇编语言为addvv.i8s vr1.3,vr2.3,vr3.2,pr3,其中操作码addvv.i8s查询指令集得到的指令子集为图2c中由指令名name、指令格式instructionformat、指令缩写op、指令参数的类型field range和操作数与指令参数之间的映射关系mapping所组成的指令信息集合。拆分第一汇编程序得到第一汇编元素序列为:{addvv.i8s→vr1.3→vr2.3→vr3.2→pr3},由于指令缩写op为N/A,因此根据指令功能func参数的约束区间和映射关系确定原始机器码的[31:29]区间的数值为默认值000,然后解析操作数vr1.3,查询预设vr数值表得到vr1.3对应的二进制数值为00111,然后根据映射关系确定填入指令参数rd的约束区间[14:10],即原始机器码的二进制区间[14:10]的数值为00111,以此类推,逐次确定操作数vr2.3对应的二进制数值01011填入指令参数rs的约束区间[19:15],操作数vr3.2对应的二进制数值01110填入指令参数rt的约束区间[24:20],操作数pr3对应的二进制数值0011填入指令参数rp的约束区间[28:25],原始机器码的其他二进制区间[9:4]、[3:1]、[0]则根据预设规则和指令格式中指令参数的数值确定,最后得到第一机器码000 0011 01110 01011 00111 000000 000 0。
如图2d所示,假设第一汇编语言为subvv.i16t vr1.3,vr2.3,vr3.2,pr3,其中操作码subvv.i16t查询指令集得到的指令子集为图2d中由指令名name、指令格式instruction format、指令缩写op、指令参数的类型field range和操作数与指令参数之间的映射关系mapping所组成的指令信息集合。拆分第一汇编程序得到第一汇编元素序列为:{subvv.i16t→vr1.3→vr2.3→vr3.2→pr3},由于指令缩写op为op1=i8s/i16s/i32s/i64s/i8t/i16t/i32t/i64t,操作码的op标识为i16t,可知位于第6个,对应比特位5,转换为二进制数值101,因此根据指令功能func参数的约束区间和映射关系确定原始机器码的[31:29]区间的数值为101,然后解析操作数vr1.3,查询预设vr数值表得到vr1.3对应的二进制数值为00111,其次,根据映射关系确定填入指令参数rd的约束区间[14:10],即原始机器码的二进制区间[14:10]的数值为00111,以此类推,逐次确定操作数vr2.3对应的二进制数值01011填入指令参数rs的约束区间[19:15],操作数vr3.2对应的二进制数值01110填入指令参数rt的约束区间[24:20],操作数pr3对应的二进制数值0011填入指令参数rp的约束区间[28:25],原始机器码的其他二进制区间[9:4]、[3:1]、[0]则根据预设规则和指令格式中指令参数的数值确定,最后得到第一机器码101 0011 01110 01011 00111 000000 0000。
如图2e所示,假设第一汇编语言为movsv vr1.2,pr2,0x3,其中操作码movsv查询指令集得到的指令子集为图2e中由指令名name、指令格式instruction format、指令缩写op、指令参数的类型field range和操作数与指令参数之间的映射关系mapping所组成的指令信息集合。拆分第一汇编程序得到第一汇编元素序列为:{movsv→vr1.2→pr2→0x3},由于指令格式中不包括指令功能func参数,因此跳过该部分参数解析,然后解析操作数vr1.2,查询预设vr数值表得到vr1.3对应的二进制数值为00000110,然后根据映射关系确定填入指令参数rd的约束区间[15:8],即原始机器码的二进制区间[15:8]的数值为00111,以此类推,解析操作数pr2,查询pr数值表得到pr2对应的二进制数值为00000010,然后根据映射关系确定填入指令参数rs的约束区间[23:16],即原始机器码的二进制区间[23:16]的数值为00000010,解析操作数0x3,二进制数值为0011,根据映射关系确定对应的指令参数imm无需数值截取,直接填入imm的约束区间[31:28],即原始机器码的二进制区间[31:28]的数值为0011,原始机器码的其他二进制区间[7:4]、[3:1]、[0]则根据预设规则和指令格式中指令参数的数值确定,最后得到第一机器码0011 0000 00000010 00000110 0000 0110。
如图2f所示,假设第一汇编语言为beq r1,r2,0x800,其中操作码beq查询指令集得到的指令子集为图2f中由指令名name、指令格式instruction format、指令缩写op、指令参数的类型field range和操作数与指令参数之间的映射关系mapping所组成的指令信息集合。拆分第一汇编程序得到第一汇编元素序列为:{beq→r1→r2→0x800},由于指令缩写op为N/A,因此根据指令功能func参数的约束区间和映射关系确定原始机器码的[31:29]区间的数值为func参数的约定值000,即原始机器码的[14:12]的数值为000,然后解析操作数r1得到二进制数值00001,根据约束区间和映射关系确定原始机器码的二进制区间[19:15]的数值为00001,解析操作数r2得到二进制数值00010,根据约束区间和映射关系确定原始机器码的二进制区间[24:20]的数值为00010,解析操作数0x800的二进制数值为0000 10000000 0000,遍历指令格式中的指令参数确定两个imm参数的描述内容imm[8:4](约束区间[11:7])和imm[15:9](约束区间[31:25]),则截取的数值分别为00000和0000100,即原始机器码的二进制区间[11:7]的数值为00000,二进制区间[31:25]的数值为0000100,原始机器码的其他二进制区间[6:4]、[3:1]、[0]则根据预设规则和指令格式中指令参数的数值确定,最后得到第一机器码0100000 00010 00001 000 00000 001 101 0。
与上述图2a所示的实施例一致的,请参阅图3,图3是本申请实施例提供的一种汇编程序处理方法的流程示意图,应用于如图1所述的电子设备,如图所示,本汇编程序处理方法包括:
S301,电子设备在检测到针对第一汇编程序的解析请求时,处理所述第一汇编程序得到第一汇编元素序列,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数;
S302,所述电子设备检测所述第一汇编程序是否正确;
S303,所述电子设备若检测出所述第一汇编程序正确,则根据所述第一汇编元素序列的操作码查询所述指令集描述文件的所述指令集,得到所述操作码对应的第一指令子集,所述第一指令子集包含支持动态更新的指令格式,所述指令格式包括指令功能func参数和所述指令功能参数所对应的机器码的二进制区间;
S304,所述电子设备检测所述第一指令子集的指令缩写的描述内容;
S305,所述电子设备若检测到所述指令缩写的描述内容为预设缩写标识序列中的第一缩写标识,则根据所述第一缩写标识在所述预设缩写标识序列中的排序,解析所述指令缩写并将解析结果填入所述指令功能参数对应的原始机器码的二进制区间;逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的所述原始机器码的二进制区间,得到第一机器码。
S306,所述电子设备执行所述第一机器码。
可以看出,本申请实施例中,电子设备在检测到针对第一汇编程序的解析请求时,处理第一汇编程序得到第一汇编元素序列,第一汇编元素序列包括多个汇编元素,多个汇编元素包括操作码和操作数,检测第一汇编程序是否正确,若通过汇编器检测出第一汇编程序正确,则调用指令集描述文件的指令集,并解析第一汇编元素序列中的汇编元素,得到第一汇编程序对应的第一机器码,执行第一机器码。由于电子设备设置有汇编器源码和指令集描述文件,汇编器源码存储于电子设备的第一存储空间,指令集描述文件存储于电子设备的第二存储空间,第一存储空间和第二存储空间不同,指令集描述文件包括指令集,且第二存储空间支持文件更新和调用,故而汇编程序每次可以动态加载最新的指令集,并进行汇编器的工作,实现了将指令集的修改与汇编器的改动解耦,软件工程师和芯片前端工程师只要按约定的指令集格式开展工作就行,避免因更新不及时而导致汇编器沿用旧指令集生成异常机器码的情况出现,提高汇编器的稳定性和准确度。
与上述图2a所示的实施例一致的,请参阅图4,图4是本申请实施例提供的一种汇编程序处理方法的流程示意图,应用于电子设备,如图所示,本汇编程序处理方法包括:
S401,电子设备在检测到针对第一汇编程序的解析请求时,逐行读取所述第一汇编程序,以逗号或空格进行元素切割得到多个汇编元素;
S402,所述电子设备根据所述多个汇编元素和每个汇编元素在所述第一汇编程序中的语法位置,创建第一汇编元素序列,所述每个汇编元素的序列位置和语法位置是一一对应的,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数。
S403,所述电子设备检测所述第一汇编程序是否正确;
S404,所述电子设备若检测出所述第一汇编程序正确,则根据所述第一汇编元素序列的操作码查询所述指令集描述文件的所述指令集,得到所述操作码对应的第一指令子集,所述第一指令子集包含支持动态更新的指令格式,所述指令格式包括指令功能func参数和所述指令功能参数所对应的机器码的二进制区间;
S405,所述电子设备检测所述第一指令子集的指令缩写的描述内容;
S406,所述电子设备若检测到所述指令缩写的描述内容为预设缩写标识序列中的第一缩写标识,则根据所述第一缩写标识在所述预设缩写标识序列中的排序,解析所述指令缩写并将解析结果填入所述指令功能参数对应的原始机器码的二进制区间;
S407,所述电子设备检测所述第一汇编元素序列的每个操作数的类型;
S408,所述电子设备若检测到所述每个操作数的类型为寄存器,则解析所述每个操作数的所代表的二进制数值,并根据指令子集中的指令参数与操作数之间的映射关系将所述二进制数值填入所述每个操作数对应的原始机器码的二进制区间。
S409,所述电子设备若检测到所述每个操作数的类型为立即数,则从所述第一汇编元素序列中找到需要填入立即数的一个或多个目标指令参数;检测所述一个或多个目标指令参数中的每个目标指令参数是否需要进行截取操作;
S410,所述电子设备若检测到所述每个目标指令参数需要进行截取操作,则解析所述每个操作数所代表的二进制数值,根据所述每个目标指令参数所限定截取的比特位截取所述二进制数值中的对应比特位,并根据所述第一个目标指令参数的描述内容将截取的所述比特位填入对应的原始机器码的二进制区间;
S411,所述电子设备若检测到所述每个目标指令参数不需要进行截取操作,则解析所述每个操作数所代表的二进制数值,并将所述二进制数值填入对应的原始机器码的二进制区间。
可以看出,本申请实施例中,电子设备在检测到针对第一汇编程序的解析请求时,处理第一汇编程序得到第一汇编元素序列,第一汇编元素序列包括多个汇编元素,多个汇编元素包括操作码和操作数,检测第一汇编程序是否正确,若通过汇编器检测出第一汇编程序正确,则调用指令集描述文件的指令集,并解析第一汇编元素序列中的汇编元素,得到第一汇编程序对应的第一机器码,执行第一机器码。由于电子设备设置有汇编器源码和指令集描述文件,汇编器源码存储于电子设备的第一存储空间,指令集描述文件存储于电子设备的第二存储空间,第一存储空间和第二存储空间不同,指令集描述文件包括指令集,且第二存储空间支持文件更新和调用,故而汇编程序每次可以动态加载最新的指令集,并进行汇编器的工作,实现了将指令集的修改与汇编器的改动解耦,软件工程师和芯片前端工程师只要按约定的指令集格式开展工作就行,避免因更新不及时而导致汇编器沿用旧指令集生成异常机器码的情况出现,提高汇编器的稳定性和准确度。
与上述图2a、图3、图4所示的实施例一致的,请参阅图5,图5是本申请实施例提供的一种电子设备500的结构示意图,如图所示,所述电子设备500设置有汇编器源码和指令集描述文件,所述汇编器源码存储于所述电子设备500的第一存储空间,所述指令集描述文件存储于所述电子设备500的第二存储空间,所述第一存储空间和所述第二存储空间不同,所述指令集描述文件包括指令集,且所述第二存储空间支持文件更新和调用;所述电子设备500包括应用处理器510、存储器520、通信接口530以及一个或多个程序521,其中,所述一个或多个程序521被存储在上述存储器520中,并且被配置由上述应用处理器510执行,所述一个或多个程序521包括用于执行以下步骤的指令;
在检测到针对第一汇编程序的解析请求时,处理所述第一汇编程序得到第一汇编元素序列,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数;以及用于检测所述第一汇编程序是否正确;以及用于若检测出所述第一汇编程序正确,则调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码;以及用于执行所述第一机器码。
可以看出,本申请实施例中,电子设备在检测到针对第一汇编程序的解析请求时,处理第一汇编程序得到第一汇编元素序列,第一汇编元素序列包括多个汇编元素,多个汇编元素包括操作码和操作数,检测第一汇编程序是否正确,若通过汇编器检测出第一汇编程序正确,则调用指令集描述文件的指令集,并解析第一汇编元素序列中的汇编元素,得到第一汇编程序对应的第一机器码,执行第一机器码。由于电子设备设置有汇编器源码和指令集描述文件,汇编器源码存储于电子设备的第一存储空间,指令集描述文件存储于电子设备的第二存储空间,第一存储空间和第二存储空间不同,指令集描述文件包括指令集,且第二存储空间支持文件更新和调用,故而汇编程序每次可以动态加载最新的指令集,并进行汇编器的工作,实现了将指令集的修改与汇编器的改动解耦,软件工程师和芯片前端工程师只要按约定的指令集格式开展工作就行,避免因更新不及时而导致汇编器沿用旧指令集生成异常机器码的情况出现,提高汇编器的稳定性和准确度。
在上述实施例中,在所述调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码方面,所述程序中的指令具体用于执行以下操作:根据所述第一汇编元素序列的操作码查询所述指令集描述文件的所述指令集,得到所述操作码对应的第一指令子集,所述第一指令子集包含支持动态更新的指令格式,所述指令格式包括指令功能func参数和所述指令功能参数所对应的机器码的二进制区间;以及用于检测所述第一指令子集的指令缩写的描述内容;以及用于若检测到所述指令缩写的描述内容为预设缩写标识序列中的第一缩写标识,则根据所述第一缩写标识在所述预设缩写标识序列中的排序,解析所述指令缩写并将解析结果填入所述func参数对应的原始机器码的二进制区间;逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的所述原始机器码的二进制区间,得到第一机器码。
在上述实施例中,所述程序还包括用于执行以下操作的指令:若检测到所述指令缩写的描述内容为无,则逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的原始机器码的二进制区间,得到第一机器码。
在上述实施例中,在所述逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的所述原始机器码的二进制区间,得到第一机器码方面,所述程序中的指令具体用于执行以下操作:检测所述第一汇编元素序列的每个操作数的类型;以及用于若检测到所述每个操作数的类型为寄存器,则解析所述每个操作数的所代表的二进制数值,并根据指令子集中的指令参数与操作数之间的映射关系将所述二进制数值填入所述每个操作数对应的原始机器码的二进制区间。
在上述实施例中,所述程序还包括用于执行以下操作的指令:若检测到所述每个操作数的类型为立即数,则从所述第一汇编元素序列中找到需要填入立即数的一个或多个目标指令参数;检测所述一个或多个目标指令参数中的每个目标指令参数是否需要进行截取操作;
若检测到所述每个目标指令参数需要进行截取操作,则解析所述每个操作数所代表的二进制数值,根据所述每个目标指令参数所限定截取的比特位截取所述二进制数值中的对应比特位,并根据所述第一个目标指令参数的描述内容将截取的所述比特位填入对应的原始机器码的二进制区间;以及用于若检测到所述每个目标指令参数不需要进行截取操作,则解析所述每个操作数所代表的二进制数值,并将所述二进制数值填入对应的原始机器码的二进制区间。
在上述实施例中,在所述处理所述第一汇编程序得到第一汇编元素序列方面,所述程序中的指令具体用于执行以下操作:逐行读取所述第一汇编程序,以逗号或空格进行元素切割得到多个汇编元素;以及用于根据所述多个汇编元素和每个汇编元素在所述第一汇编程序中的语法位置,创建第一汇编元素序列,所述每个汇编元素的序列位置和语法位置是一一对应的。
在上述实施例中,在所述检测所述第一汇编程序是否正确方面,所述程序中的指令具体用于执行以下操作:检测所述第一汇编程序的操作码是否存在;以及用于若存在,则检测所述第一汇编程序的每个操作数的格式、类型和长度是否符合预设要求;若不存在,则确定所述第一汇编程序错误;以及用于若符合,则确定所述第一汇编程序正确;以及用于若不符合,则确定所述第一汇编程序错误。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图6是本申请实施例中所涉及的汇编程序处理装置600的功能单元组成框图。该汇编程序处理装置600应用于电子设备,所述电子设备设置有汇编器源码和指令集描述文件,所述汇编器源码存储于所述电子设备的第一存储空间,所述指令集描述文件存储于所述电子设备的第二存储空间,所述第一存储空间和所述第二存储空间不同,所述指令集描述文件包括指令集,且所述第二存储空间支持文件更新和调用;所述汇编程序处理装置包括处理单元601和通信单元602,其中,
所述处理单元601,用于在检测到针对第一汇编程序的解析请求时,处理所述第一汇编程序得到第一汇编元素序列,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数;以及用于检测所述第一汇编程序是否正确;以及用于若检测出所述第一汇编程序正确,则通过所述通信单元602调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码;以及用于执行所述第一机器码。
其中,所述汇编程序处理装置600还可以包括存储单元603,用于存储电子设备的程序代码和数据。所述处理单元601可以是处理器,所述通信单元602可以是内部通信接口,存储单元603可以是存储器。
可以看出,本申请实施例中,电子设备在检测到针对第一汇编程序的解析请求时,处理第一汇编程序得到第一汇编元素序列,第一汇编元素序列包括多个汇编元素,多个汇编元素包括操作码和操作数,检测第一汇编程序是否正确,若通过汇编器检测出第一汇编程序正确,则调用指令集描述文件的指令集,并解析第一汇编元素序列中的汇编元素,得到第一汇编程序对应的第一机器码,执行第一机器码。由于电子设备设置有汇编器源码和指令集描述文件,汇编器源码存储于电子设备的第一存储空间,指令集描述文件存储于电子设备的第二存储空间,第一存储空间和第二存储空间不同,指令集描述文件包括指令集,且第二存储空间支持文件更新和调用,故而汇编程序每次可以动态加载最新的指令集,并进行汇编器的工作,实现了将指令集的修改与汇编器的改动解耦,软件工程师和芯片前端工程师只要按约定的指令集格式开展工作就行,避免因更新不及时而导致汇编器沿用旧指令集生成异常机器码的情况出现,提高汇编器的稳定性和准确度。
在上述实施例中,在所述调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码方面,所述处理单元601具体用于:根据所述第一汇编元素序列的操作码查询所述指令集描述文件的所述指令集,得到所述操作码对应的第一指令子集,所述第一指令子集包含支持动态更新的指令格式,所述指令格式包括指令功能func参数和所述指令功能参数所对应的机器码的二进制区间;以及用于检测所述第一指令子集的指令缩写的描述内容;以及用于若检测到所述指令缩写的描述内容为预设缩写标识序列中的第一缩写标识,则根据所述第一缩写标识在所述预设缩写标识序列中的排序,解析所述指令缩写并将解析结果填入所述func参数对应的原始机器码的二进制区间;逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的所述原始机器码的二进制区间,得到第一机器码。
在上述实施例中,所述处理单元601还用于:若检测到所述指令缩写的描述内容为无,则逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的原始机器码的二进制区间,得到第一机器码。
在上述实施例中,在所述逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的所述原始机器码的二进制区间,得到第一机器码方面,所述处理单元601具体用于:检测所述第一汇编元素序列的每个操作数的类型;以及用于若检测到所述每个操作数的类型为寄存器,则解析所述每个操作数的所代表的二进制数值,并根据指令子集中的指令参数与操作数之间的映射关系将所述二进制数值填入所述每个操作数对应的原始机器码的二进制区间。
在上述实施例中,所述处理单元601还用于:若检测到所述每个操作数的类型为立即数,则从所述第一汇编元素序列中找到需要填入立即数的一个或多个目标指令参数;检测所述一个或多个目标指令参数中的每个目标指令参数是否需要进行截取操作;以及用于若检测到所述每个目标指令参数需要进行截取操作,则解析所述每个操作数所代表的二进制数值,根据所述每个目标指令参数所限定截取的比特位截取所述二进制数值中的对应比特位,并根据所述第一个目标指令参数的描述内容将截取的所述比特位填入对应的原始机器码的二进制区间;以及用于若检测到所述每个目标指令参数不需要进行截取操作,则解析所述每个操作数所代表的二进制数值,并将所述二进制数值填入对应的原始机器码的二进制区间。
在上述实施例中,在所述处理所述第一汇编程序得到第一汇编元素序列方面,所述处理单元601具体用于:逐行读取所述第一汇编程序,以逗号或空格进行元素切割得到多个汇编元素;以及用于根据所述多个汇编元素和每个汇编元素在所述第一汇编程序中的语法位置,创建第一汇编元素序列,所述每个汇编元素的序列位置和语法位置是一一对应的。
在上述实施例中,在所述检测所述第一汇编程序是否正确方面,所述处理单元具体用于:检测所述第一汇编程序的操作码是否存在;以及用于若存在,则检测所述第一汇编程序的每个操作数的格式、类型和长度是否符合预设要求;若不存在,则确定所述第一汇编程序错误;以及用于若符合,则确定所述第一汇编程序正确;以及用于若不符合,则确定所述第一汇编程序错误。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种汇编程序处理方法,其特征在于,应用于电子设备,所述电子设备设置有汇编器源码和指令集描述文件,所述汇编器源码存储于所述电子设备的第一存储空间,所述指令集描述文件存储于所述电子设备的第二存储空间,所述第一存储空间和所述第二存储空间不同,所述指令集描述文件包括指令集,且所述第二存储空间支持文件更新和调用;所述方法包括:
在检测到针对第一汇编程序的解析请求时,处理所述第一汇编程序得到第一汇编元素序列,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数;
检测所述第一汇编程序是否正确;
若检测出所述第一汇编程序正确,则调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码,其中,所述指令集包括所述第一汇编程序对应的操作数据与原始机器码的每个参考二进制区间的数值之间的转换规则,所述操作数据包括操作码和操作数,所述第一机器码是指使用所述第一汇编程序对应的操作数据按照所述转换规则对所述原始机器码的至少一个参考二进制区间的数值进行转换得到的机器码,所述参考二进制区间是指所述原始机器码的多个二进制区间中与所述操作码、操作数存在对应关系的二进制区间;
执行所述第一机器码。
2.根据权利要求1所述的方法,其特征在于,所述调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码,包括:
根据所述第一汇编元素序列的操作码查询所述指令集描述文件的所述指令集,得到所述操作码对应的第一指令子集,所述第一指令子集包含支持动态更新的指令格式,所述指令格式包括指令功能func参数和所述指令功能参数所对应的机器码的二进制区间;
检测所述第一指令子集的指令缩写的描述内容;
若检测到所述指令缩写的描述内容为预设缩写标识序列中的第一缩写标识,则根据所述第一缩写标识在所述预设缩写标识序列中的排序,解析所述指令缩写并将解析结果填入所述指令功能参数对应的原始机器码的二进制区间;
逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的所述原始机器码的二进制区间,得到第一机器码。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若检测到所述指令缩写的描述内容为无,则逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的原始机器码的二进制区间,得到第一机器码。
4.根据权利要求3所述的方法,其特征在于,所述逐个解析所述第一汇编元素序列的操作数,并将每个操作数的解析结果填入对应的所述原始机器码的二进制区间,得到第一机器码,包括:
检测所述第一汇编元素序列的每个操作数的类型;
若检测到所述每个操作数的类型为寄存器,则解析所述每个操作数的所代表的二进制数值,并根据指令子集中的指令参数与操作数之间的映射关系将所述二进制数值填入所述每个操作数对应的原始机器码的二进制区间。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若检测到所述每个操作数的类型为立即数,则从所述第一汇编元素序列中找到需要填入立即数的一个或多个目标指令参数;检测所述一个或多个目标指令参数中的每个目标指令参数是否需要进行截取操作;
若检测到所述每个目标指令参数需要进行截取操作,则解析所述每个操作数所代表的二进制数值,根据所述每个目标指令参数所限定截取的比特位截取所述二进制数值中的对应比特位,并根据所述第一个目标指令参数的描述内容将截取的所述比特位填入对应的原始机器码的二进制区间;
若检测到所述每个目标指令参数不需要进行截取操作,则解析所述每个操作数所代表的二进制数值,并将所述二进制数值填入对应的原始机器码的二进制区间。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述处理所述第一汇编程序得到第一汇编元素序列,包括:
逐行读取所述第一汇编程序,以逗号或空格进行元素切割得到多个汇编元素;
根据所述多个汇编元素和每个汇编元素在所述第一汇编程序中的语法位置,创建第一汇编元素序列,所述每个汇编元素的序列位置和语法位置是一一对应的。
7.根据权利要求6所述的方法,其特征在于,所述检测所述第一汇编程序是否正确,包括:
检测所述第一汇编程序的操作码是否存在;
若存在,则检测所述第一汇编程序的每个操作数的格式、类型和长度是否符合预设要求;若不存在,则确定所述第一汇编程序错误;
若符合,则确定所述第一汇编程序正确;
若不符合,则确定所述第一汇编程序错误。
8.一种汇编程序处理装置,其特征在于,应用于电子设备,所述电子设备设置有汇编器源码和指令集描述文件,所述汇编器源码存储于所述电子设备的第一存储空间,所述指令集描述文件存储于所述电子设备的第二存储空间,所述第一存储空间和所述第二存储空间不同,所述指令集描述文件包括指令集,且所述第二存储空间支持文件更新和调用;所述装置包括处理单元和通信单元,其中,
所述处理单元,用于在检测到针对第一汇编程序的解析请求时,处理所述第一汇编程序得到第一汇编元素序列,所述第一汇编元素序列包括多个汇编元素,所述多个汇编元素包括操作码和操作数;以及用于检测所述第一汇编程序是否正确;以及用于若检测出所述第一汇编程序正确,则通过所述通信单元调用所述指令集描述文件的所述指令集,并解析所述第一汇编元素序列中的汇编元素,得到所述第一汇编程序对应的第一机器码,其中,所述指令集包括所述第一汇编程序对应的操作数据与原始机器码的每个参考二进制区间的数值之间的转换规则,所述操作数据包括操作码和操作数,所述第一机器码是指使用所述第一汇编程序对应的操作数据按照所述转换规则对所述原始机器码的至少一个参考二进制区间的数值进行转换得到的机器码,所述参考二进制区间是指所述原始机器码的多个二进制区间中与所述操作码、操作数存在对应关系的二进制区间;以及用于执行所述第一机器码。
9.一种电子设备,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-7任一项所述的方法中的步骤的指令。
10.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910244796.8A CN109947432B (zh) | 2019-03-28 | 2019-03-28 | 汇编程序处理方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910244796.8A CN109947432B (zh) | 2019-03-28 | 2019-03-28 | 汇编程序处理方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109947432A CN109947432A (zh) | 2019-06-28 |
CN109947432B true CN109947432B (zh) | 2022-06-10 |
Family
ID=67012213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910244796.8A Active CN109947432B (zh) | 2019-03-28 | 2019-03-28 | 汇编程序处理方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947432B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110488738B (zh) * | 2019-07-23 | 2021-04-09 | 中车青岛四方机车车辆股份有限公司 | 一种代码生成方法及装置 |
CN112994963A (zh) * | 2019-12-13 | 2021-06-18 | 深圳市中兴微电子技术有限公司 | 一种处理方法及装置 |
WO2022000371A1 (zh) * | 2020-07-01 | 2022-01-06 | 深圳市大疆创新科技有限公司 | 接口生成方法、装置及计算机可读存储介质 |
CN113407236B (zh) * | 2021-06-29 | 2024-03-08 | 上海阵量智能科技有限公司 | 一种指令汇编方法、装置、计算机设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339519B (zh) * | 2008-08-13 | 2011-09-14 | 哈尔滨工程大学 | 面向嵌入式微处理器的软硬结合控制流检测方法 |
US20120151184A1 (en) * | 2010-12-10 | 2012-06-14 | Daniel Shawcross Wilkerson | Hard object: constraining control flow and providing lightweight kernel crossings |
CN102591698B (zh) * | 2011-12-05 | 2015-06-24 | 福建二菱电子有限公司 | 一种单片机反汇编的方法 |
CN103345445A (zh) * | 2013-07-02 | 2013-10-09 | 华中科技大学 | 基于控制流检测的抗错误注入攻击的安全芯片设计方法 |
CN108845811B (zh) * | 2018-05-30 | 2021-12-03 | 武汉高仕达电气有限公司 | 一种基于can总线的双核dsp固件升级方法及系统 |
-
2019
- 2019-03-28 CN CN201910244796.8A patent/CN109947432B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109947432A (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947432B (zh) | 汇编程序处理方法及相关装置 | |
US8832669B2 (en) | Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization | |
US8612959B2 (en) | Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization | |
CN106407111B (zh) | 终端测试装置、终端测试设备及变量维护方法 | |
CN103294598A (zh) | 一种源代码检查方法及装置 | |
CN111158741B (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
CN102117241A (zh) | 一种多核系统调试方法和多核系统 | |
JP2018505506A (ja) | 機械ベースの命令編集 | |
CN107797823A (zh) | 业务规则管理方法、装置、存储介质和计算机设备 | |
CN111596920A (zh) | 文件编译方法、装置、编译设备及存储介质 | |
CN104320312A (zh) | 网络应用安全测试工具及模糊测试用例生成方法和系统 | |
CN110333872A (zh) | 一种应用的处理方法、装置、设备和介质 | |
CN110826074A (zh) | 一种应用漏洞检测方法、装置和计算机可读存储介质 | |
CN103379145B (zh) | 信息处理的方法、设备和系统 | |
CN105224305B (zh) | 函数调用路径编解码方法、装置及系统 | |
CN116432185B (zh) | 一种异常检测方法、装置、可读存储介质及电子设备 | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及系统 | |
CN115756484A (zh) | 预编译目标代码仓库确定方法及装置、存储介质 | |
CN113050948B (zh) | 动态库优化方法、装置、设备及存储介质 | |
CN114706586A (zh) | 代码编译、代码运行方法、装置、计算机设备及存储介质 | |
CN113377672A (zh) | 测试方法、装置及设备 | |
CN110262787B (zh) | 语句替换方法、装置和电子设备 | |
CN117234590B (zh) | 指令集生成方法、装置、介质及设备 | |
CN118055174A (zh) | 物联网设备数据的协议解析方法、装置、设备及存储介质 | |
CN109145234B (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 |