CN116088864A - 汇编方法、反汇编方法、设备及存储介质 - Google Patents

汇编方法、反汇编方法、设备及存储介质 Download PDF

Info

Publication number
CN116088864A
CN116088864A CN202211724568.9A CN202211724568A CN116088864A CN 116088864 A CN116088864 A CN 116088864A CN 202211724568 A CN202211724568 A CN 202211724568A CN 116088864 A CN116088864 A CN 116088864A
Authority
CN
China
Prior art keywords
target
instruction
assembly
operator
operand
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.)
Pending
Application number
CN202211724568.9A
Other languages
English (en)
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.)
Sipic Technology Co Ltd
Original Assignee
Sipic Technology Co Ltd
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 Sipic Technology Co Ltd filed Critical Sipic Technology Co Ltd
Priority to CN202211724568.9A priority Critical patent/CN116088864A/zh
Publication of CN116088864A publication Critical patent/CN116088864A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • 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

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请属于计算机技术领域,具体涉及汇编方法、反汇编方法、设备及存储介质,包括:获取预设方法类;预设方法类中包括至少一个汇编函数和与至少一个汇编函数一一对应的指令格式;在预设方法类中,获取目标汇编函数;通过目标汇编函数接收目标汇编指令对应的目标操作数;在指令格式中确定出目标汇编指令对应的目标指令格式;目标指令格式用于指示目标汇编指令对应的比特位区间;将目标汇编指令存入比特位区间,得到目标汇编指令对应的机器码。可以解决传统汇编的工具链流程较长,涉及到文本汇编指令的解析、切分和生成,增加了额外的工作投入,导致汇编效率工具开发效率较低的问题。提高汇编和反汇编工具的开发效率。

Description

汇编方法、反汇编方法、设备及存储介质
技术领域
本申请涉及汇编方法、反汇编方法、设备及存储介质,属于计算机技术领域。
背景技术
汇编是指把使用汇编语言写的源代码编译成计算机可以识别的机器码的过程,反汇编恰恰相反,是指把机器码或者可执行程序的机器码为汇编语言源代码的过程。
在传统的汇编和反汇编过程中,按照传统汇编和反汇编工具的工具链流程,在汇编过程中,首先将可读的文本汇编指令解析为抽象的软件操作,随后转换为二进制的机器码,在反汇编的过程中,将二进制的机器码转换为指令对象,随后将指令对象转换为可读的文本汇编指令。
然而,传统汇编和反汇编工具的工具链流程较长,涉及到文本汇编指令的解析、切分和生成,增加了额外的工作投入,导致汇编和反汇编工具开发效率较低的问题。
发明内容
本申请提供了汇编方法、反汇编方法、设备及存储介质,可以解决传统汇编和反汇编工具的工具链流程较长,涉及到文本汇编指令的解析、切分和生成,增加了额外的工作投入,导致汇编和反汇编工具开发效率较低的问题。
本申请提供如下技术方案:
第一方面,提供了一种汇编方法,所述方法包括:
获取预设方法类;所述预设方法类中包括至少一个汇编函数和与所述至少一个汇编函数一一对应的指令格式;
在所述预设方法类中,获取目标汇编函数;
通过所述目标汇编函数接收目标汇编指令对应的目标操作数;
在所述指令格式中确定出所述目标汇编指令对应的目标指令格式;所述目标指令格式用于指示所述目标汇编指令对应的比特位区间;
将所述目标汇编指令存入所述比特位区间,得到所述目标汇编指令对应的机器码。
可选地,所述目标指令格式还用于指示所述目标汇编指令的目标操作符和所述目标操作符对应的目标操作符编码;所述比特位区间包括所述目标操作符对应的第一比特位区间和所述目标操作数对应的第二比特位区间。
可选地,所述将所述目标汇编指令存入所述比特位区间,得到所述目标汇编指令对应的机器码,包括:
将所述目标操作符编码存入所述第一比特位区间;
确定所述目标操作数对应的目标操作数编码;
将所述目标操作数编码存入所述第二比特位区间。
可选地,所述将所述目标汇编指令存入所述比特位区间,得到所述目标汇编指令对应的机器码,包括:
获取所述目标汇编指令的目标操作符;所述比特位区间包括所述目标操作符对应的第一比特位区间和所述目标操作数对应的第二比特位区间;
基于操作符与操作符编码之间的预设关系,在所述操作符编码中确定出所述目标操作符对应的目标操作符编码;
将所述目标操作符编码存入所述第一比特位区间;
确定所述目标操作数对应的目标操作数编码;
将所述目标操作数编码存入所述第二比特位区间。
可选地,所述获取所述目标汇编指令的目标操作符,包括:
获取所述目标汇编函数的函数名作为所述目标操作符。
可选地,所述目标指令格式还用于指示所述目标汇编指令对应的指令结构;所述指令结构包括所述目标操作数的数量和所述目标操作数对应的寄存器。
第二方面,提供一种反汇编方法,其特征在于,所述方法包括:
获取预设方法类;
在所述预设方法类中,获取目标反汇编函数;
通过所述目标反汇编函数接收目标机器码;所述目标机器码为使用如第一方面所述的汇编方法对目标汇编指令进行汇编得到的;
基于所述目标机器码确定目标操作符和目标操作数;
获取至少一个指令格式;
依次将所述至少一个指令格式与所述目标操作符匹配,在所述至少一个指令格式中确定出目标指令格式;所述目标指令格式用于指示所述目标汇编指令对应的指令结构;
将所述目标操作数填入所述指令结构,得到所述目标汇编指令。
可选地,所述基于所述目标机器码确定目标操作符和目标操作数,包括:
将所述目标机器码进行分解,得到目标操作符编码和至少一个目标操作数编码;
基于操作符与操作符编码之间的预设关系,在所述操作符中确定出所述目标操作符编码对应的目标操作符;
将所述至少一个目标操作数编码转换得到所述目标操作数。
第三方面,提供一种电子设备,包括处理器和存储器,所述存储器中存储有程序,所述程序由所述处理器加载并执行,以实现如第一方面所述的汇编方法的步骤,或者如第二方面所述的反汇编方法的步骤。
第四方面,提供一种计算机可读存储介质,所述存储介质中存储有程序,所述程序被处理器执行时,用于实现如第一方面所述的汇编方法的步骤,或者如第二方面所述的反汇编方法的步骤。
本申请的有益效果在于:通过获取预设方法类;预设方法类中包括至少一个汇编函数和与至少一个汇编函数一一对应的指令格式;在预设方法类中,获取目标汇编函数;通过目标汇编函数接收目标汇编指令对应的目标操作数;在指令格式中确定出目标汇编指令对应的目标指令格式;目标指令格式用于指示目标汇编指令对应的比特位区间;将目标汇编指令存入比特位区间,得到目标汇编指令对应的机器码。可以解决传统汇编的工具链流程较长,涉及到文本汇编指令的解析、切分和生成,增加了额外的工作投入,导致汇编效率工具开发效率较低的问题。通过目标汇编函数接收目标操作数,再根据对应的目标指令格式确定目标操作符和目标操作数的比特位区间,无需使用文本汇编指令,避免了对文本汇编指令的解析、切分和生成,降低了工作投入,从而提高了汇编工具的开发效率。同时,使用了结构化的汇编指令进行指令格式的格式定义,利用了底层编程语言的现有特性,不需要重复的开发工作,从而进一步提高了汇编工具的开发效率。
另外,通过获取预设方法类;在预设方法类中,获取目标反汇编函数;通过目标反汇编函数接收目标机器码;基于目标机器码确定目标操作符和目标操作数;获取至少一个指令格式;依次将至少一个指令格式与目标操作符匹配,在至少一个指令格式中确定出目标指令格式;目标指令格式用于指示目标汇编指令对应的指令结构;将目标操作数填入指令结构,得到目标汇编指令,通过与汇编过程共享统一的指令格式;可以解决反汇编工具开发效率较低的问题;通过目标反汇编函数接收目标机器码,并匹配得到目标指令函数,将目标机器码对应的目标操作符和目标操作数填入目标指令格式指示的指令结构,即可得到目标汇编指令,避免了文本汇编指令的生成,减少反汇编工具链的开发工作,可以提高反汇编工具的开发效率;同时,避免了汇编和反汇编工具对指令格式定义不一致的情况,减少开发过程中的接口对接和调试开销,进一步提高了汇编与反汇编工具的开发效率。
附图说明
图1是本申请一个实施例提供的汇编方法的流程图;
图2是本申请一个实施例提供的代码自动补充的示意图;
图3是本申请一个实施例提供的汇编指令的汇编文本与程序语音的示意图;
图4是本申请一个实施例提供的反汇编方法的示意图;
图5是本申请一个实施例提供的机器码分解的示意图;
图6是本申请一个实施例提供的汇编装置的框图;
图7是本申请一个实施例提供的反汇编装置的框图;
图8是本申请一个实施例提供的电子设备的框图。
具体实施方式
下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在申请中,在未作相反说明的情况下,使用的方位词如“上、下、顶、底”通常是针对附图所示的方向而言的,或者是针对部件本身在竖直、垂直或重力方向上而言的;同样地,为便于理解和描述,“内、外”是指相对于各部件本身的轮廓的内、外,但上述方位词并不用于限制申请。
如图1所示,本申请的实施例提供一种汇编方法,该方法的实现可依赖于计算机程序,该计算机程序可运行于智能手机、平板电脑、个人电脑等计算机设备或者运行于服务器,本实施例不对该方法的运行主体作限定。该方法至少包括以下几个步骤:
步骤101,获取预设方法类。
其中,预设方法类中包括至少一个汇编函数和与至少一个汇编函数一一对应的指令格式。
本实施例中,汇编函数与指令格式一一对应。指令格式用于指示汇编指令对应的指令结构。
在指令格式的定义上,与现有的编程语言(例如Python、C++等)进行深度耦合,以使得汇编指令的指令结构符合下层编程语言的语法和文法要求,从而可以直接将其简化为代码序列。这样,无需使用传统的汇编文本指令作为中间产物的过程,随后利用即时编译、即时执行技术,直接使用下层编程语言的虚拟机对汇编指令进行执行,生成指令对象,从而节省了文本解析、切分的工作,提高汇编指令汇编的效率。
同时,通过将汇编指令格式与现有的下层编程语言进行统一,还可以直接复用现有的成熟的开发环境和开发工具(例如IDE、eclipse等),从而实现汇编指令的代码补全提醒、自动纠错和调试(参考图2)。
本实施例中,指令格式的定义分为两个部分:操作符与操作数,其中操作符部分用来区分指令的类型,例如加法或者减法等;操作符部分用来配置汇编指令需要操作的属性(例如加法的输入、输出地址或者寄存器编号)。
本实施例中,预设方法类是预先设置的一个方法类,该方法类中设置有至少一个汇编函数,每个汇编函数用于汇编不同的汇编指令。
比如:以汇编函数A和汇编函数B为例,汇编函数A对应的指令格式为指令格式A1,用于对汇编指令A2进行汇编;汇编函数B对应的指令格式为指令格式B1,用于对汇编指令B2进行汇编。
步骤102,在预设方法类中,获取目标汇编函数。
本实施例中,目标汇编函数用于对目标汇编指令进行汇编操作。
步骤103,通过目标汇编函数接收目标汇编指令对应的目标操作数。
传统汇编、反汇编工具链的迭代最开始是面向汇编程序员进行开发。由于传统的汇编器需要对程序员编写的文本汇编指令进行处理,所以需要对文本进行解析、切分;相应地,传统的反汇编器需要将机器码转换为文本汇编指令供汇编程序员进行阅读和分析。
比如:参考图3,以汇编指令为加法汇编指令为例,在汇编文本中,该汇编指令通过下式表示:
Addi r0,r1,1
在传统的汇编过程中,读取汇编文本的第一行,得到加法汇编指令的操作符为Addi后,再读取后半部分,得到操作数分别是r0,r1,1;再解析的得到op1=r0,op2=r1,result=r1。
在本实施例中,通过获取预设方法类中的目标汇编指令,接收目标汇编指令对应的目标操作数,通过目标汇编函数对传入的操作数进行汇编操作。
比如:参考图2,以预设方法类为inst[0].assembly为例,目标汇编函数为Add函数;Add函数会读取得到op1=r0,op2=r1,result=r1。
步骤104,在指令格式中确定出目标汇编指令对应的目标指令格式。
其中,目标指令格式用于指示目标汇编指令对应的比特位区间。
本实施例中,指令格式的定义包括操作符与操作数两个部分,相应地,比特位区间包括目标操作符对应的第一比特位区间和目标操作数对应的第二比特位区间。
另外,目标指令格式还用于指示目标汇编指令对应的指令结构;指令结构包括目标操作数的数量和目标操作数对应的寄存器。
步骤105,将目标汇编指令存入比特位区间,得到目标汇编指令对应的机器码。
其中,将目标汇编指令存入比特位区间,得到目标汇编指令对应的机器码,包括:将目标操作符对应的目标操作符编码存入第一比特位区间;将目标操作数对应的目标操作数编码存入第二比特位区间。
本实施例中,目标操作符编码和目标操作数编码为二进制编码,在将目标操作符对应的目标操作符编码存入第一比特位区间之前,还需要先获取目标操作符对应的目标操作符编码。
在一个示例中,如图3所示,目标指令格式还用于指示目标汇编指令的目标操作符和目标操作符对应的目标操作符编码。
此时,将目标汇编指令存入比特位区间,得到目标汇编指令对应的机器码,包括:将目标操作符编码存入第一比特位区间;确定目标操作数对应的目标操作数编码;将目标操作数编码存入第二比特位区间。
比如:以加法类型的目标汇编指令、该目标汇编指令对应的目标操作符为Add为例,则目标操作符对应的目标操作符编码可以为00,其在比特位区间中占据[0,2)位的范围。在汇编过程中,可以将目标汇编指令对应的目标操作符编码00写入到比特位区间[0,2)位的范围中,完成从抽象的指令到二进制的机器码指令的转换。
在另一个示例中,操作符与操作符编码之间预先设置有对应关系,在获取目标汇编指令的目标操作符之后,通过操作符与操作符编码之间的预设关系,查询得到目标操作符对应的目标操作符编码。
此时,将目标汇编指令存入比特位区间,得到目标汇编指令对应的机器码,包括:获取目标汇编指令的目标操作符;比特位区间包括目标操作符对应的第一比特位区间和目标操作数对应的第二比特位区间;基于操作符与操作符编码之间的预设关系,在操作符编码中确定出目标操作符对应的目标操作符编码;将目标操作符编码存入第一比特位区间;确定目标操作数对应的目标操作数编码;将目标操作数编码存入第二比特位区间。
其中,获取目标汇编指令的目标操作符,包括:获取目标汇编函数的函数名作为目标操作符。
综上所述,本实施例提供了一种汇编方法,包括:获取预设方法类;预设方法类中包括至少一个汇编函数和与至少一个汇编函数一一对应的指令格式;在预设方法类中,获取目标汇编函数;通过目标汇编函数接收目标汇编指令对应的目标操作数;在指令格式中确定出目标汇编指令对应的目标指令格式;目标指令格式用于指示目标汇编指令对应的比特位区间;将目标汇编指令存入比特位区间,得到目标汇编指令对应的机器码。可以解决传统汇编的工具链流程较长,涉及到文本汇编指令的解析、切分和生成,增加了额外的工作投入,导致汇编效率工具开发效率较低的问题。通过目标汇编函数接收目标操作数,再根据对应的目标指令格式确定目标操作符和目标操作数的比特位区间,无需使用文本汇编指令,避免了对文本汇编指令的解析、切分和生成,降低了工作投入,从而提高了汇编工具的开发效率。同时,使用了结构化的汇编指令进行指令格式的格式定义,利用了底层编程语言的现有特性,不需要重复的开发工作,从而进一步提高了汇编工具的开发效率。
如图5所示,本申请的实施例提供一种反汇编方法,该方法的实现可依赖于计算机程序,该计算机程序可运行于智能手机、平板电脑、个人电脑等计算机设备或者运行于服务器,本实施例不对该方法的运行主体作限定。该方法至少包括以下几个步骤:
步骤401,获取预设方法类。
步骤402,在预设方法类中,获取目标反汇编函数。
步骤403,通过目标反汇编函数接收目标机器码。
其中,目标机器码为使用上述汇编方法对目标汇编指令进行汇编得到的。
步骤404,基于目标机器码确定目标操作符和目标操作数。
其中,基于目标机器码确定目标操作符和目标操作数,包括:将目标机器码进行分解,得到目标操作符编码和至少一个目标操作数编码;基于操作符与操作符编码之间的预设关系,在操作符中确定出目标操作符编码对应的目标操作符;将至少一个目标操作数编码转换得到目标操作数。
比如:参考图5,以目标机器码为0000100001000100011为例,对目标机器码进行分解,得到00001、00001、00010和00011,其中,目标机器码中的第一00001为目标机器码对应的目标操作符编码,第二个00001以及00010、00011为目标机器码对应的目标操作数编码。
步骤405,获取至少一个指令格式。
其中,至少一个至少格式与上述汇编方法实施例中的至少一个指令格式相同。
传统的通用编译工具大多以通用CPU为主要硬件对象,且汇编器和反汇编器是独立开发的,各自拥有一套独立的指令格式定义和解析方式,在汇编器和反汇编器中需要重复定义目标硬件的指令格式,这样,增加了冗余工作,需要消耗比较多的开发人力和时间,并且不利于硬件指令格式的统一管理和更新。
本实施例中,通过在预设方法类中定义汇编指令的指令格式,在汇编和反汇编的过程中使用相同的指令格式,实现了汇编与反汇编的指令格式的统一,可以减少开发人力和时间,同时,方便了指令格式的统一管理和更新。
步骤406,依次将至少一个指令格式与目标操作符匹配,在至少一个指令格式中确定出目标指令格式。
其中,目标指令格式用于指示目标汇编指令对应的指令结构。
步骤407,将目标操作数填入指令结构,得到目标汇编指令。
综上所述,本实施例提供了一种反汇编方法,包括:获取预设方法类;在预设方法类中,获取目标反汇编函数;通过目标反汇编函数接收目标机器码;基于目标机器码确定目标操作符和目标操作数;获取至少一个指令格式;依次将至少一个指令格式与目标操作符匹配,在至少一个指令格式中确定出目标指令格式;目标指令格式用于指示目标汇编指令对应的指令结构;将目标操作数填入指令结构,得到目标汇编指令,通过与汇编过程共享统一的指令格式;可以解决反汇编工具开发效率较低的问题;通过目标反汇编函数接收目标机器码,并匹配得到目标指令函数,将目标机器码对应的目标操作符和目标操作数填入目标指令格式指示的指令结构,即可得到目标汇编指令,避免了文本汇编指令的生成,减少反汇编工具链的开发工作,可以提高反汇编工具的开发效率;同时,避免了汇编和反汇编工具对指令格式定义不一致的情况,减少开发过程中的接口对接和调试开销,进一步提高了汇编与反汇编工具的开发效率。
图6是本申请一个实施例提供的汇编装置的框图。该装置至少包括以下几个模块:方法获取模块610、函数获取模块620、目标接收模块630、格式确定模块640和指令存入模块650。
方法获取模块610,用于获取预设方法类;预设方法类中包括至少一个汇编函数和与至少一个汇编函数一一对应的指令格式;
函数获取模块620,用于在预设方法类中,获取目标汇编函数;
目标接收模块630,用于通过目标汇编函数接收目标汇编指令对应的目标操作数;
格式确定模块640,用于在指令格式中确定出目标汇编指令对应的目标指令格式;目标指令格式用于指示目标汇编指令对应的比特位区间;
指令存入模块650,用于将目标汇编指令存入比特位区间,得到目标汇编指令对应的机器码。
相关细节参考上述汇编方法实施例。
图7是本申请一个实施例提供的反汇编装置的框图。该装置至少包括以下几个模块:第一获取模块710、第二获取模块720、目标接收模块730、目标确定模块740、第三获取模块750、格式匹配模块760和指令填入模块770。
第一获取模块710,用于获取预设方法类;
第二获取模块720,用于在预设方法类中,获取目标反汇编函数;
目标接收模块730,用于通过目标反汇编函数接收目标机器码;
目标确定模块740,用于基于目标机器码确定目标操作符和目标操作数;
第三获取模块750,用于获取至少一个指令格式;
格式匹配模块760,依次将至少一个指令格式与目标操作符匹配,在至少一个指令格式中确定出目标指令格式;目标指令格式用于指示目标汇编指令对应的指令结构;
指令填入模块770,用于将目标操作数填入指令结构,得到目标汇编指令。
相关细节参考上述反汇编方法实施例。
需要说明的是:上述两个装置实施例,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将汇编装置或反汇编装置内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的汇编/反汇编装置与汇编/反汇编方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本申请一个实施例提供的一种电子设备的框图,该电子设备可以是:智能手机、平板电脑、笔记本电脑、台式电脑或服务器。该电子设备还可能被称为用户设备、便携式终端、膝上型终端、台式终端、控制终端等,本实施例对此不作限定。该电子设备至少包括处理器和存储器。
处理器可以包括一个或多个处理核心,比如:4核心处理器、6核心处理器等。处理器可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器还可以包括AI(ArtificialIntelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器所执行以实现本申请中上述汇编方法或反汇编方法实施例的步骤。
在一些实施例中,上述电子设备还可选包括有:外围设备接口和至少一个外围设备。处理器、存储器和外围设备接口之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口相连。示意性地,外围设备包括但不限于:射频电路、触摸显示屏、音频电路、和电源等。
当然,上述电子设备还可以包括更少或更多的组件,本实施例对此不作限定。
可选地,本申请还提供有一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述汇编方法或反汇编方法实施例的步骤。
可选地,本申请还提供有一种计算机产品,该计算机产品包括计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述汇编方法或反汇编方法实施例的步骤。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种汇编方法,其特征在于,所述方法包括:
获取预设方法类;所述预设方法类中包括至少一个汇编函数和与所述至少一个汇编函数一一对应的指令格式;
在所述预设方法类中,获取目标汇编函数;
通过所述目标汇编函数接收目标汇编指令对应的目标操作数;
在所述指令格式中确定出所述目标汇编指令对应的目标指令格式;所述目标指令格式用于指示所述目标汇编指令对应的比特位区间;
将所述目标汇编指令存入所述比特位区间,得到所述目标汇编指令对应的机器码。
2.根据权利要求1所述的方法,其特征在于,所述目标指令格式还用于指示所述目标汇编指令的目标操作符和所述目标操作符对应的目标操作符编码;所述比特位区间包括所述目标操作符对应的第一比特位区间和所述目标操作数对应的第二比特位区间。
3.根据权利要求2所述的方法,其特征在于,所述将所述目标汇编指令存入所述比特位区间,得到所述目标汇编指令对应的机器码,包括:
将所述目标操作符编码存入所述第一比特位区间;
确定所述目标操作数对应的目标操作数编码;
将所述目标操作数编码存入所述第二比特位区间。
4.根据权利要求1所述的方法,其特征在于,所述将所述目标汇编指令存入所述比特位区间,得到所述目标汇编指令对应的机器码,包括:
获取所述目标汇编指令的目标操作符;所述比特位区间包括所述目标操作符对应的第一比特位区间和所述目标操作数对应的第二比特位区间;
基于操作符与操作符编码之间的预设关系,在所述操作符编码中确定出所述目标操作符对应的目标操作符编码;
将所述目标操作符编码存入所述第一比特位区间;
确定所述目标操作数对应的目标操作数编码;
将所述目标操作数编码存入所述第二比特位区间。
5.根据权利要求4所述的方法,其特征在于,所述获取所述目标汇编指令的目标操作符,包括:
获取所述目标汇编函数的函数名作为所述目标操作符。
6.根据权利要求1所述的方法,其特征在于,所述目标指令格式还用于指示所述目标汇编指令对应的指令结构;所述指令结构包括所述目标操作数的数量和所述目标操作数对应的寄存器。
7.一种反汇编方法,其特征在于,所述方法包括:
获取预设方法类;
在所述预设方法类中,获取目标反汇编函数;
通过所述目标反汇编函数接收目标机器码;所述目标机器码为使用如权利要求1-6任一项所述的汇编方法对目标汇编指令进行汇编得到的;
基于所述目标机器码确定目标操作符和目标操作数;
获取至少一个指令格式;
依次将所述至少一个指令格式与所述目标操作符匹配,在所述至少一个指令格式中确定出目标指令格式;所述目标指令格式用于指示所述目标汇编指令对应的指令结构;
将所述目标操作数填入所述指令结构,得到所述目标汇编指令。
8.根据权利要求7所述的方法,其特征在于,所述基于所述目标机器码确定目标操作符和目标操作数,包括:
将所述目标机器码进行分解,得到目标操作符编码和至少一个目标操作数编码;
基于操作符与操作符编码之间的预设关系,在所述操作符中确定出所述目标操作符编码对应的目标操作符;
将所述至少一个目标操作数编码转换得到所述目标操作数。
9.一种电子设备,包括处理器和存储器,所述存储器中存储有程序,其特征在于,所述程序由所述处理器加载并执行,以实现如权利要求1至6任一项所述的汇编方法的步骤,或者如权利要求7至8任一项所述的反汇编方法的步骤。
10.一种计算机可读存储介质,所述存储介质中存储有程序,其特征在于,所述程序被处理器执行时,用于实现如权利要求1至6任一项所述的汇编方法的步骤,或者如权利要求7至8任一项所述的反汇编方法的步骤。
CN202211724568.9A 2022-12-30 2022-12-30 汇编方法、反汇编方法、设备及存储介质 Pending CN116088864A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211724568.9A CN116088864A (zh) 2022-12-30 2022-12-30 汇编方法、反汇编方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211724568.9A CN116088864A (zh) 2022-12-30 2022-12-30 汇编方法、反汇编方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116088864A true CN116088864A (zh) 2023-05-09

Family

ID=86213187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211724568.9A Pending CN116088864A (zh) 2022-12-30 2022-12-30 汇编方法、反汇编方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116088864A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737175A (zh) * 2023-08-16 2023-09-12 通用技术集团机床工程研究院有限公司 译码方法、文件解析方法、解析器、系统及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737175A (zh) * 2023-08-16 2023-09-12 通用技术集团机床工程研究院有限公司 译码方法、文件解析方法、解析器、系统及存储介质
CN116737175B (zh) * 2023-08-16 2023-12-08 通用技术集团机床工程研究院有限公司 译码方法、文件解析方法、解析器、系统及存储介质

Similar Documents

Publication Publication Date Title
Marwedel et al. Code generation for embedded processors
US6226776B1 (en) System for converting hardware designs in high-level programming language to hardware implementations
US7389499B2 (en) Method and apparatus for automatically converting numeric data to a processor efficient format for performing arithmetic operations
US8458630B1 (en) Supporting dynamic aspects of polymorphism in high-level synthesis of integrated circuit designs
US20090049431A1 (en) Method and compiler of compiling a program
JPH11513512A (ja) ディジタル信号プロセッサの製造方法
CN110955410A (zh) 一种代码自动生成方法、装置、设备及介质
CN116088864A (zh) 汇编方法、反汇编方法、设备及存储介质
CN114780100B (zh) 编译方法、电子设备及存储介质
EP3805879A1 (en) Support device and support program
Pyeatt et al. ARM 64-bit assembly language
CN109558121A (zh) 接口驱动程序的开发方法、装置、设备及存储介质
US7694283B2 (en) Method and apparatus for generating specification data
CN112416313B (zh) 支持大整数数据类型和运算符的编译方法
CN113220306A (zh) 操作执行方法、装置和电子设备
CN113835688B (zh) 一种科学计算语言解释器的对象封装方法
US20220198112A1 (en) Method, device, and storage medium for simulating a design
Cardoso et al. Enriching MATLAB with aspect-oriented features for developing embedded systems
CN112596737A (zh) 一种函数调用关系的扫描方法、系统、设备及存储介质
US8135943B1 (en) Method, apparatus, and computer-readable medium for generating a dispatching function
CN116483736B (zh) 插桩位置确定方法及电子设备
EP4350504A1 (en) Cross-linking method and apparatus, electronic device, and storage medium
US8689195B2 (en) Identifying structured data types as requiring designated initializers
CN117406969A (zh) 一种TypeScript类型声明的生成方法、系统、装置及介质
US20030140054A1 (en) Processor composing apparatus, system LSI composing apparatus, processor composing method, system LSI composing method, and program therefor

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