CN117519665B - 一种模型驱动的汇编器自动生成方法及装置 - Google Patents
一种模型驱动的汇编器自动生成方法及装置 Download PDFInfo
- Publication number
- CN117519665B CN117519665B CN202311282193.XA CN202311282193A CN117519665B CN 117519665 B CN117519665 B CN 117519665B CN 202311282193 A CN202311282193 A CN 202311282193A CN 117519665 B CN117519665 B CN 117519665B
- Authority
- CN
- China
- Prior art keywords
- instruction
- assembler
- index
- index table
- assembly
- 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
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000013507 mapping Methods 0.000 claims abstract description 47
- 230000009466 transformation Effects 0.000 claims abstract description 20
- 238000004590 computer program Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 12
- 238000011161 development Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开一种模型驱动的汇编器自动生成方法及装置,该方法步骤包括:S01.构建生成指令集架构汇编器所需的汇编器描述模型;S02.根据汇编器描述模型,分别生成指令正则语法索引表、指令字段编码变换序列索引表以及指令名称与指令项索引的映射表;S03.读取汇编器的目标汇编程序代码,分别生成汇编指令索引表、汇编指令程序地址索引表、汇编指令长度索引表、汇编指令并行执行标记索引表、汇编指令二进制编码索引表以及标号与索引及程序地址映射表;S04.依次获取一条汇编指令,转换为对应的二进制编码;S05.完成所有二进制编码后,输出编码结果。本发明具有实现简单、成本低、智能化程度以及效果高、可扩展性好等优点。
Description
技术领域
本发明涉及指令集汇编器实现技术领域,尤其涉及一种模型驱动的汇编器自动生成方法及装置。
背景技术
汇编器是编译系统中重要的组成部分,其主要功能是将汇编语言编写的源程序代码编译成二进制指令的目标文件。汇编器的输入为汇编语言程序代码,这些程序代码可以是高级语言编译器编译输出的汇编代码,也可以是手工编写的汇编语言程序代码,汇编器的输出为二进制指令的目标文件。汇编指令与二进制指令之间是一一对应的关系,是直译的过程。实现汇编器的难点在于如何高效地定义两者之间的映射转换关系,以及如何自适应的应对指令集体系结构的扩展变化。
对于不同的指令集体系结构(Instruction SetArchitecture,简称ISA)均需要分别独立开发不同的汇编器,以满足不同目标处理器的要求。且汇编器一般是伴随目标处理器的设计而协同开发的,因此,在设计新的处理器时,需要重新开发与之相对应的汇编器。不同的目标处理器在指令字长、指令编码方式、寄存器设置和功能单元数目等方面都有所不同,使得汇编器在设计和实现上也均会有很大的不同。另外,处理器的结构不同以及设计思想的不同也会导致汇编器在设计和实现方法上的差异性。且由于这种差异性的存在,对每一种新的ISA或者对原有的ISA进行改进和扩展时,都需要重新开发与之相适应的汇编器。
现有技术中汇编器通常都是直接根据已经设计好的指令集架构,按照指令集手册的指令编码和指令格式手工编程实现,即需要依赖于人工编程方式实现。然而,在新指令集架构的设计过程中,指令集的并不是固定不变的,在不断的迭代改进和优化中,或者根据应用需求在不断的更新和扩展中指令集均可能发生变化。而对于每一次的指令集迭代版本,都需要快速的提供工具链和汇编器来测试、验证和评估本次版本指令集的性能。因而人工编程方式需要不断实现指令格式和指令编码设计与更新,每一次的指令集更新都需要耗费大量的人力资源和时间成本进行手工编程实现汇编器,开发效率低且还易于出错,无法动态适应指令集架构的改进和扩展,难以满足当前对于新指令集架构设计的快速迭代和探索需求。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现简单、成本低、智能化程度以及效果高、可扩展性好以及灵活性强的模型驱动的汇编器自动生成方法及装置。
为解决上述技术问题,本发明提出的技术方案为:
一种模型驱动的汇编器自动生成方法,步骤包括:
S01.构建生成指令集架构汇编器所需的汇编器描述模型,所述汇编器描述模型包括指令集架构的指令名称描述、指令编码字段描述、指令编码字段语法匹配规则描述以及指令项描述;
S02.根据所述汇编器描述模型,分别生成指令正则语法索引表、指令字段编码变换序列索引表以及指令名称与指令项索引的映射表,所述指令名称与指令项索引的映射表记录指令集中的所有指令的指令名称与其指令项索引的映射关系;
S03.读取汇编器的目标汇编程序代码,分别生成汇编指令索引表、汇编指令程序地址索引表、汇编指令长度索引表、汇编指令并行执行标记索引表、汇编指令二进制编码索引表以及标号与索引及程序地址映射表,所述标号与索引及程序地址的映射表记录指令集中的目标汇编程序中的所有与标号与索引及程序地址的映射关系;
S04.根据汇编指令索引值依次获取一条汇编指令,并根据步骤S02、步骤S03生成的各索引表、映射表将获取的汇编指令转换为对应的二进制编码,保存到所述汇编指令二进制编码索引表中;
S05.完成所有汇编指令的二进制编码后,输出编码结果。
进一步的,所述指令名称描述用于声明指令集包含的所有指令名称集合,所述指令编码字段描述用于声明指令集中指令格式出现的编码字段,所述指令编码字段语法匹配规则描述用于声明指令集中指令格式的编码字段语法匹配规则,所述指令项描述用于声明指令集中的所有指令项。
进一步的,所述指令编码字段描述包括多个指令编码字段二元组,每一个指令编码字段二元组包括编码字段名称、编码字段正则语法描述规则,所述指令编码字段语法匹配规则包括多个指令编码字段语法匹配规则七元组,每一个指令编码字段语法匹配规则七元组包括匹配规则名称、匹配模式、解析语法、解析内容块索引、解析内容映射实例、解析内容的二进制编码长度和匹配条目。
进一步的,所述指令项描述包括多个指令项五元组,每一个指令项五元组是由指令名称、指令长度、解析语法、汇编语法和编码字段序列组成,所述编码字段序列包括多个元组,每一个元组包括字段源、索引号、字段长度、匹配规则和默认编码。
进一步的,所述指令正则语法索引表按索引顺序记录指令集中的所有指令项的指令正则语法,所述指令字段编码变换序列索引表按索引顺序记录指令集中的所有指令项的指令字段编码变换序列。
进一步的,所述汇编指令索引表按索引顺序记录目标汇编程序中的所有汇编指令,所述汇编指令程序地址索引表按索引顺序记录目标汇编程序中的所有汇编指令的程序地址,所述汇编指令长度索引表按索引顺序记录目标汇编程序中的所有汇编指令的指令长度,所述汇编指令并行执行标记索引表按索引顺序记录目标汇编程序中的所有汇编指令的并行执行标记,所述汇编指令二进制编码索引表按索引顺序记录目标汇编程序中的所有汇编指令的二进制编码,所述标号与索引及程序地址的映射表中的每个条目包括标号、索引及程序地址。
进一步的,步骤S04包括:
S4.1.根据当前的汇编指令索引值,从所述汇编指令索引表中获得一条汇编指令;
S4.2.根据当前获取的汇编指令的首字符是否为并行执行标记,设置汇编指令并行执行标记索引表中对应索引位置的值;
S4.3.在指令名称描述集合中以正则语法搜索汇编指令,获得汇编指令名称;
S4.4.根据所述汇编指令名称,从所述指令名称与指令项索引的映射表中获取指令名称对应的索引值集合;
S4.5.依次根据所述指令名称对应的索引值集合中索引值从所述指令正则语法索引表中获取指令正则语法,在获取的指令正则语法中以正则语法搜索汇编指令,并确定汇编指令对应的正确索引值;
S4.6.根据确定的正确索引值从所述指令字段编码变换序列索引表中获取当前汇编指令对应的指令字段编码变换序列;
S4.7.根据所述指令字段编码变换序列对汇编指令进行二进制编码变换,获得汇编指令的二进制编码;
S4.8.依次更新汇编指令长度索引表、汇编指令程序地址索引表、标号与索引及程序地址的映射表,最后根据汇编指令并行执行标记索引表更新所有含并行执行标记的汇编指令的二进制编码。
进一步的,步骤S4.2中,若获取的汇编指令的首字符为并行执行标记,则汇编指令并行执行标记索引表中对应索引位置的值设为1,否则设为0。
进一步的,步骤S4.8包括:
根据汇编指令的二进制编码长度确定汇编指令的指令长度,并更新所述汇编指令长度索引表;
根据当前更新的所述汇编指令长度索引表,更新汇编指令程序地址索引表;
根据当前更新的所述指令程序地址索引表,更新所述标号与索引及程序地址的映射表;
根据当前更新的所述标号与索引及程序地址的映射表,更新所有含标号的汇编指令的二进制编码。
一种模型驱动的汇编器自动生成装置,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序以执行如上述方法。
与现有技术相比,本发明的优点在于:
1、本发明通过先构建生成指令集架构汇编器所需的汇编器描述模型,根据该汇编器描述模型分别生成指令相关的索引表以及指令名称与指令项索引的映射表,再读取汇编器的目标汇编程序代码,分别生成汇编指令相关的索引表以及标号与索引及程序地址映射表,最后依据生成的指令相关的索引表、汇编指令相关的索引表以及两个映射表将汇编指令转换为对应的二进制编码,可以基于汇编器描述模型驱动实现汇编器的自动化生成,能够显著提升汇编器的开发效率、缩短开发周期,有效保证所生成的汇编器的正确性。
2、本发明能够动态的适应指令集架构的改进和扩展,当需要支持增减或扩展新的指令而使得指令集动态变化时,只需要修改模型即能够快速、自动生成新的汇编器,无需重新进行汇编器设计以及实现,能够大幅度的减少开发和维护成本和难度,避免重复的设计实现过程,提高汇编器实现的可扩展性能。
3、本发明进一步通过构建指令名称描述集合,能够精准识别出一条汇编语句的具体指令名称,无需如传统汇编器需要根据汇编程序指令顺序对每一条汇编指令都遍历语法匹配规则,能够显著减少匹配次数,进一步提升汇编速度。
4、本发明进一步通过构建正则表达式语法规则描述汇编器语法,能够快速生成指令解析模块,无需如传统汇编器需要根据不同指令集定制相应的指令解析模块,当指令语法发生变动时,无需大幅度修改或增加指令解析模块,能够进一步提升迭代开发进度。
附图说明
图1是本实施例模型驱动的汇编器自动生成方法的实现流程示意图。
图2是本发明具体应用实施例中汇编器描述模型中采用的指令名称描述示例的示意图。
图3是本发明具体应用实施例中汇编器描述模型中采用的指令编码字段描述示例的示意图。
图4是本发明具体应用实施例中汇编器描述模型中采用的指令编码字段语法匹配规则描述示例的示意图。
图5是本发明具体应用实施例中汇编器描述模型中采用的指令项描述示例的示意图。
图6本实施例目标汇编程序编译为二进制编码的实现流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例中模型驱动的汇编器自动生成方法的步骤包括:
S01.构建生成指令集架构汇编器所需的汇编器描述模型,汇编器描述模型包括指令集架构的指令名称描述、指令编码字段描述、指令编码字段语法匹配规则描述以及指令项描述;
S02.根据汇编器描述模型,分别生成指令正则语法索引表、指令字段编码变换序列索引表以及指令名称与指令项索引的映射表,指令名称与指令项索引的映射表记录指令集中的所有指令的指令名称与其指令项索引的映射关系;
S03.读取汇编器的目标汇编程序代码,分别生成汇编指令索引表、汇编指令程序地址索引表、汇编指令长度索引表、汇编指令并行执行标记索引表、汇编指令二进制编码索引表以及标号与索引及程序地址映射表,标号与索引及程序地址的映射表记录指令集中的目标汇编程序中的所有与标号与索引及程序地址的映射关系;
S04.根据汇编指令索引值依次获取一条汇编指令,并根据步骤S02、步骤S03生成的各索引表、映射表将获取的汇编指令转换为对应的二进制编码,保存到汇编指令二进制编码索引表中;
S05.完成所有汇编指令的二进制编码后,输出编码结果。
本实施例通过先构建生成指令集架构汇编器所需的汇编器描述模型,模型包括指令集架构的指令名称描述、指令编码字段描述、指令编码字段语法匹配规则描述以及指令项描述等,然后根据该汇编器描述模型分别生成指令相关的索引表(指令正则语法索引表、指令字段编码变换序列索引表)以及指令名称与指令项索引的映射表,再读取汇编器的目标汇编程序代码,分别生成汇编指令相关的索引表(汇编指令索引表、汇编指令程序地址索引表、汇编指令长度索引表、汇编指令并行执行标记索引表、汇编指令二进制编码索引表)以及标号与索引及程序地址映射表,最后依据上述生成的指令相关的索引表、汇编指令相关的索引表以及两个映射表将汇编指令转换为对应的二进制编码,可以基于汇编器描述模型驱动实现汇编器的自动生成,能够显著提升汇编器的开发效率、缩短开发周期,同时保证所生成的汇编器的正确性。
同时当指令集发生动态变化时,只需要修改模型即可以快速生成所需的汇编器,还能够动态的适应指令集架构的改进和扩展,提高汇编器实现的可扩展性能。
在本实施例中,步骤S01中指令名称描述具体为用于声明指令集包含的所有指令名称集合,指令编码字段描述具体为用于声明指令集中指令格式出现的编码字段,指令编码字段语法匹配规则描述具体为用于声明指令集中指令格式的编码字段语法匹配规则,指令项描述具体为用于声明指令集中的所有指令项。相比于传统汇编器根据汇编程序指令顺序对每一条汇编指令都需要遍历语法匹配规则,导致执行效率低下,本实施例通过构建指令名称描述集合,能够精准识别出一条汇编语句的具体指令名称,显著减少匹配次数,从而有效提升汇编速度。
在具体应用实施例中,如图2所示给出了一个汇编器描述模型中的指令名称描述示例,其中包括9条指令(SABS、SABS16、SADD1、SADD16、SADDA、SADDLS、SADDU、SADDU1)的指令名称描述,“\\w”表示匹配一个字母、数字、下划线或汉字字符。“?!\\w”表示后一个字符为非\\w,即后一个字符为非字母、数字、下划线、汉字字符。通过增添“?!\\w”可以精准识别出一条汇编语句的具体指令名称,防止错误的识别为指令名称的前缀指令名称,如SABS是SABS16的前缀指令名称。
在本实施例中,指令编码字段描述具体包括多个指令编码字段二元组,每一个指令编码字段二元组包括编码字段名称、编码字段正则语法描述规则。传统汇编器需要根据不同指令集定制相应的指令解析模块,当指令语法发生变动时,即需要大幅度修改或增加指令解析模块,导致汇编器开发效率低。本实施例通过根据正则表达式语法规则描述汇编器语法,能够解决传统汇编器上述问题,快速生成指令解析模块,当指令语法发生变动时无需大幅度修改或增加指令解析模块,可以进一步提升迭代开发效率。
在具体应用实施例中,如图3所示给出了一个汇编器描述模型中的指令编码字段描述示例,其中包括8个编码字段(AR0_7、AR12_15、AR4_7、AR8_15、AR[IMM8]、AR[IMM]、AR[OR]、AR[UCST2])描述。例如编码字段名称AR0_7,其需要匹配AR0、AR1、AR2、AR3、AR4、AR5、AR6、AR7,所以其对应的编码字段正则语法描述规则为“AR[0-7]”,其中“[0-7]”表示匹配0~7中任意一个数字。编码字段名称AR[IMM8]所需要匹配的语法相对复杂,其中“\\*”表示匹配一个星号字符,“[+-]*”表示匹配任意个加法字符或减法字符,“\\d+”表示匹配1个或多个数字,“\\[”表示匹配一个左中括号,“[0-9A-Z]”表示匹配1个0~9、A~Z字符,“[0-9A-Z]{2}”表示匹配2个0~9、A~Z字符。“((0X[0-9A-Z]{2}|(\\d+))”表示匹配一个宽度为8的十六进制数字或十进制数字。“\\]”表示匹配一个右中括号。本实施例通过设置编码字段正则语法描述规则可以支持复杂的语法描述。
在本实施例中,指令编码字段语法匹配规则具体包括多个指令编码字段语法匹配规则七元组,每一个指令编码字段语法匹配规则七元组具体包括匹配规则名称、匹配模式、解析语法、解析内容块索引、解析内容映射实例、解析内容的二进制编码长度和匹配条目。
在具体应用实施例中,如图4所示给出了一个汇编器描述模型中的指令编码字段语法匹配规则描述示例,其中列出了三个指令编码字段语法匹配规则,matchPattern匹配类型为分别"1:1"、”match”和”parse”。其中“1:1”对应为完全匹配,即content的字符串完全等于matchItem中左边一项,才返回对应的二进制码。“match”对应为符合匹配,即content的字符串符合matchItem中左边一项,返回对应的二进制码。“parse”对应为解析匹配,即提取content的字符串的子字符串,按照ParseTo解析,解析生成的二进制码对齐为BitLen长度,并返回处理后的结果。
若content=“VLR”,ruleName=“CR”,则返回"000000"。
其中content字符串为“VLR”,ruleName=“CR”的匹配类型为“1:1”完全匹配,matchItem中“VST”:“000000”的左边一项与content内容完全相等,所以返回“000000”。
若content="*++AR[OR1]",ruleName=“AR[OR]_TO_OR”,则返回"0001"。
其中content字符串为“*++AR[OR1]”,ruleName=“AR[OR]_TO_OR”的匹配类型为“match”符合匹配。“.*\\[OR1\\].*”:”0001”的左边一项与content内容符合匹配。所以返回“0001”,”.*”表示匹配任意数量个任意字符,“\\[”表示匹配一个左中括号,“OR1”表示匹配字符串“OR1”,“\\]”表示匹配一个右中括号。由于字符串“*++AR[OR1]”和正则表达式规则“.*\\[OR1\\].*”是相符合的,所以最终返回“0001”。
若content="++AR[0xFA]",ruleName=“AR[IMM8]_TO_UCST8”,则返回"11111010"。
其中content字符串为“++AR[0xFA]”,ruleName=“AR[IMM8]_TO_UCST8”的匹配类型为“parse”解析匹配。其中“ParseRegex”是指该规则的正则表达式规则。“ParseLeftBracketIndex”是指提取第几个括号内容,“ParseLeftBracketIndex”:1,表示提取第一个括号内的字符串。“ParseTo”表示如何处理提取出来的字符串,这里“ParseTo”:“IMM”表示将提取出来的字符串作为立即数处理。“BitLen”表示处理后生成的二进制码对齐的长度,“BitLen”:8表示将处理得到的二进制码对齐到8位宽。由于content="++AR[0xFA]"与“ParseRegex”:“.*\\[(.*)\\]”匹配,第一个括号内提取的字符串位0xFA,该字符串经过立即数处理然后经过对齐操作后得到“11111010”,所以最终返回“11111010”。
在本实施例中,指令项描述具体包括多个指令项五元组,每一个指令项五元组是由指令名称、指令长度、解析语法、汇编语法和编码字段序列组成,编码字段序列具体包括多个元组,每一个元组包括字段源、索引号、字段长度、匹配规则和默认编码。
在具体应用实施例中,如图5所示,给出了一个汇编器描述模型中的指令项描述示例,其中列出指令项描述中:指令名称为SLDW,指令长度为16,解析语法为SLDW,汇编语法为"{P}SLDW{AR[UCST2]},{R}"。编码字段序列包含7个字段,例如,字段1的字段源为AR[UCST2],索引号为1,字段长度为2,匹配规则为AR[UCST2]_TO_AR,默认编码为空。
在本实施例中,步骤S02中指令正则语法索引表具体按索引顺序记录指令集中的所有指令项的指令正则语法,指令字段编码变换序列索引表具体按索引顺序记录指令集中的所有指令项的指令字段编码变换序列。
在本实施例中,步骤S03中,汇编指令索引表按索引顺序记录目标汇编程序中的所有汇编指令,汇编指令程序地址索引表按索引顺序记录目标汇编程序中的所有汇编指令的程序地址,汇编指令长度索引表按索引顺序记录目标汇编程序中的所有汇编指令的指令长度,汇编指令并行执行标记索引表按索引顺序记录目标汇编程序中的所有汇编指令的并行执行标记,汇编指令二进制编码索引表按索引顺序记录目标汇编程序中的所有汇编指令的二进制编码,标号与索引及程序地址的映射表中的每个条目包括标号、索引及程序地址。
如图6所示,本实施例中步骤S04的具体包括:
S4.1.根据当前的汇编指令索引值,从汇编指令索引表中获得一条汇编指令;
S4.2.根据当前获取的汇编指令的首字符是否为并行执行标记,设置汇编指令并行执行标记索引表中对应索引位置的值;
S4.3.在指令名称描述集合中以正则语法搜索汇编指令,获得汇编指令名称;
S4.4.根据汇编指令名称,从指令名称与指令项索引的映射表中获取指令名称对应的索引值集合;
S4.5.依次根据指令名称对应的索引值集合中索引值从指令正则语法索引表中获取指令正则语法,在获取的指令正则语法中以正则语法搜索汇编指令,并确定汇编指令对应的正确索引值;
S4.6.根据确定的正确索引值从指令字段编码变换序列索引表中获取当前汇编指令对应的指令字段编码变换序列;
S4.7.根据指令字段编码变换序列对汇编指令进行二进制编码变换,获得汇编指令的二进制编码;
S4.8.依次更新汇编指令长度索引表、汇编指令程序地址索引表、标号与索引及程序地址的映射表,最后根据汇编指令并行执行标记索引表更新所有含并行执行标记的汇编指令的二进制编码。
本实施例步骤S4.2中,具体若获取的汇编指令的首字符为并行执行标记,则汇编指令并行执行标记索引表中对应索引位置的值设为1,否则设为0,具体配置方式可以根据实际需求选择。
本实施例中,步骤S4.8具体包括:
根据汇编指令的二进制编码长度确定汇编指令的指令长度,并更新汇编指令长度索引表;
根据当前更新的汇编指令长度索引表,更新汇编指令程序地址索引表;
根据当前更新的指令程序地址索引表,更新标号与索引及程序地址的映射表;
根据当前更新的标号与索引及程序地址的映射表,更新所有含标号的汇编指令的二进制编码。
本实施例通过上述步骤,可以充分利用构建的汇编器描述模型驱动将汇编指令自动化转换为对应的二进制编码,提高汇编器设计实现的效率,解决传统汇编器需要按照指令集手册的指令编码和指令语义进行手工编程等问题,且可以适用于不同数目的功能单元、寄存器和指令种类的指令集架构设计,同时能够动态的适应指令集架构的改进和扩展,根据设计目标需求快速的自动生成指令集架构汇编器,在确保汇编器实现的智能化程度与效率的同时提高可扩展性以及灵活性。
本申请可以支持动态和可扩展的指令集架构,当需要支持增减或扩展新的指令使得指令集发生动态变化时,相应的修改汇编器描述模型,重新按照上述步骤即可快速自动重新生成新的汇编器,无需重新进行汇编器的设计,可以大幅度显著的减少开发和维护的成本和难度,显著的缩短开发周期。。
本实施例还提供模型驱动的汇编器自动生成装置,包括处理器以及存储器,存储器用于存储计算机程序,处理器用于执行计算机程序以执行如上述方法。
可以理解的是,本实施例上述方法可以由单个设备执行,例如一台计算机或服务器等,也可以应用于分布式场景下由多台设备相互配合来完成,在分布式场景的情况下,多台设备中的一台设备可以只执行本实施例上述方法中的某一个或多个步骤,多台设备之间进行交互以完成上述方法。处理器可以采用通用的CPU、微处理器、应用专用集成电路、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本实施例上述方法。存储器可以采用只读存储器ROM、随机存取存储器RAM、静态存储设备以及动态存储设备等形式实现。存储器可以存储操作系统和其他应用程序,在通过软件或者固件来实现本实施例上述方法时,相关的程序代码保存在存储器中,并由处理器来调用执行。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (9)
1.一种模型驱动的汇编器自动生成方法,其特征在于,步骤包括:
S01.构建生成指令集架构汇编器所需的汇编器描述模型,所述汇编器描述模型包括指令集架构的指令名称描述、指令编码字段描述、指令编码字段语法匹配规则描述以及指令项描述;
S02.根据所述汇编器描述模型,分别生成指令正则语法索引表、指令字段编码变换序列索引表以及指令名称与指令项索引的映射表,所述指令名称与指令项索引的映射表记录指令集中的所有指令的指令名称与其指令项索引的映射关系;
S03.读取汇编器的目标汇编程序代码,分别生成汇编指令索引表、汇编指令程序地址索引表、汇编指令长度索引表、汇编指令并行执行标记索引表、汇编指令二进制编码索引表以及标号与索引及程序地址映射表,所述标号与索引及程序地址的映射表记录指令集中的目标汇编程序中的所有与标号与索引及程序地址的映射关系;
S04.根据汇编指令索引值依次获取一条汇编指令,并根据步骤S02、步骤S03生成的各索引表、映射表将获取的汇编指令转换为对应的二进制编码,保存到所述汇编指令二进制编码索引表中;
S05. 完成所有汇编指令的二进制编码后,输出编码结果;
步骤S04包括:
S4.1.根据当前的汇编指令索引值,从所述汇编指令索引表中获得一条汇编指令;
S4.2.根据当前获取的汇编指令的首字符是否为并行执行标记,设置汇编指令并行执行标记索引表中对应索引位置的值;
S4.3.在指令名称描述集合中以正则语法搜索汇编指令,获得汇编指令名称;
S4.4.根据所述汇编指令名称,从所述指令名称与指令项索引的映射表中获取指令名称对应的索引值集合;
S4.5.依次根据所述指令名称对应的索引值集合中索引值从所述指令正则语法索引表中获取指令正则语法,在获取的指令正则语法中以正则语法搜索汇编指令,并确定汇编指令对应的正确索引值;
S4.6.根据确定的正确索引值从所述指令字段编码变换序列索引表中获取当前汇编指令对应的指令字段编码变换序列;
S4.7.根据所述指令字段编码变换序列对汇编指令进行二进制编码变换,获得汇编指令的二进制编码;
S4.8.依次更新汇编指令长度索引表、汇编指令程序地址索引表、标号与索引及程序地址的映射表,最后根据汇编指令并行执行标记索引表更新所有含并行执行标记的汇编指令的二进制编码。
2.根据权利要求1所述的模型驱动的汇编器自动生成方法,其特征在于,所述指令名称描述用于声明指令集包含的所有指令名称集合,所述指令编码字段描述用于声明指令集中指令格式出现的编码字段,所述指令编码字段语法匹配规则描述用于声明指令集中指令格式的编码字段语法匹配规则,所述指令项描述用于声明指令集中的所有指令项。
3.根据权利要求2所述的模型驱动的汇编器自动生成方法,其特征在于,所述指令编码字段描述包括多个指令编码字段二元组,每一个指令编码字段二元组包括编码字段名称、编码字段正则语法描述规则,所述指令编码字段语法匹配规则包括多个指令编码字段语法匹配规则七元组,每一个指令编码字段语法匹配规则七元组包括匹配规则名称、匹配模式、解析语法、解析内容块索引、解析内容映射实例、解析内容的二进制编码长度和匹配条目。
4.根据权利要求2所述的模型驱动的汇编器自动生成方法,其特征在于,所述指令项描述包括多个指令项五元组,每一个指令项五元组是由指令名称、指令长度、解析语法、汇编语法和编码字段序列组成,所述编码字段序列包括多个元组,每一个元组包括字段源、索引号、字段长度、匹配规则和默认编码。
5.根据权利要求1所述的模型驱动的汇编器自动生成方法,其特征在于,所述指令正则语法索引表按索引顺序记录指令集中的所有指令项的指令正则语法,所述指令字段编码变换序列索引表按索引顺序记录指令集中的所有指令项的指令字段编码变换序列。
6.根据权利要求1所述的模型驱动的汇编器自动生成方法,其特征在于,所述汇编指令索引表按索引顺序记录目标汇编程序中的所有汇编指令,所述汇编指令程序地址索引表按索引顺序记录目标汇编程序中的所有汇编指令的程序地址,所述汇编指令长度索引表按索引顺序记录目标汇编程序中的所有汇编指令的指令长度,所述汇编指令并行执行标记索引表按索引顺序记录目标汇编程序中的所有汇编指令的并行执行标记,所述汇编指令二进制编码索引表按索引顺序记录目标汇编程序中的所有汇编指令的二进制编码,所述标号与索引及程序地址的映射表中的每个条目包括标号、索引及程序地址。
7.根据权利要求1所述的模型驱动的汇编器自动生成方法,其特征在于,步骤S4.2中,若获取的汇编指令的首字符为并行执行标记,则汇编指令并行执行标记索引表中对应索引位置的值设为1,否则设为0。
8.根据权利要求1所述的模型驱动的汇编器自动生成方法,其特征在于,步骤S4.8包括:
根据汇编指令的二进制编码长度确定汇编指令的指令长度,并更新所述汇编指令长度索引表;
根据当前更新的所述汇编指令长度索引表,更新汇编指令程序地址索引表;
根据当前更新的所述指令程序地址索引表,更新所述标号与索引及程序地址的映射表;
根据当前更新的所述标号与索引及程序地址的映射表,更新所有含标号的汇编指令的二进制编码。
9.一种模型驱动的汇编器自动生成装置,包括处理器以及存储器,所述存储器用于存储计算机程序,其特征在于,所述处理器用于执行所述计算机程序以执行如权利要求1~8中任意一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311282193.XA CN117519665B (zh) | 2023-09-28 | 2023-09-28 | 一种模型驱动的汇编器自动生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311282193.XA CN117519665B (zh) | 2023-09-28 | 2023-09-28 | 一种模型驱动的汇编器自动生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117519665A CN117519665A (zh) | 2024-02-06 |
CN117519665B true CN117519665B (zh) | 2024-05-31 |
Family
ID=89746385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311282193.XA Active CN117519665B (zh) | 2023-09-28 | 2023-09-28 | 一种模型驱动的汇编器自动生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117519665B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9928341D0 (en) * | 1999-11-30 | 2000-01-26 | Sgs Thomson Microelectronics | Assembler set |
CN101118498A (zh) * | 2007-09-13 | 2008-02-06 | 上海交通大学 | 基于用户描述的汇编器及其实现方法 |
CN102521011A (zh) * | 2011-11-18 | 2012-06-27 | 华为技术有限公司 | 一种模拟器的生成方法及装置 |
CN114791811A (zh) * | 2022-05-17 | 2022-07-26 | 中国人民解放军国防科技大学 | 一种基于元函数模板的汇编器实现方法 |
CN114895917A (zh) * | 2022-05-17 | 2022-08-12 | 中国人民解放军国防科技大学 | 一种可扩展式汇编指令转换二进制指令的编译方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083421A1 (en) * | 2000-12-22 | 2002-06-27 | Hitachi America, Ltd. | Assembly language code compilation for an instruction-set architecture containing new instructions using the prior assembler |
-
2023
- 2023-09-28 CN CN202311282193.XA patent/CN117519665B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9928341D0 (en) * | 1999-11-30 | 2000-01-26 | Sgs Thomson Microelectronics | Assembler set |
CN101118498A (zh) * | 2007-09-13 | 2008-02-06 | 上海交通大学 | 基于用户描述的汇编器及其实现方法 |
CN102521011A (zh) * | 2011-11-18 | 2012-06-27 | 华为技术有限公司 | 一种模拟器的生成方法及装置 |
CN114791811A (zh) * | 2022-05-17 | 2022-07-26 | 中国人民解放军国防科技大学 | 一种基于元函数模板的汇编器实现方法 |
CN114895917A (zh) * | 2022-05-17 | 2022-08-12 | 中国人民解放军国防科技大学 | 一种可扩展式汇编指令转换二进制指令的编译方法 |
Non-Patent Citations (1)
Title |
---|
基于用户描述的可配置汇编器;邹耀;刘佩林;;计算机工程;20090105(01);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117519665A (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9710243B2 (en) | Parser that uses a reflection technique to build a program semantic tree | |
US8364696B2 (en) | Efficient incremental parsing of context sensitive programming languages | |
JPH06501581A (ja) | ソース・プログラムをコンパイルする方法及び装置 | |
KR20010024576A (ko) | 기계 기술로부터의 명령군 구조의 시뮬레이터 및 어셈블러생성 방법 | |
Uhl et al. | An attribute grammar for the semantic analysis of Ada | |
CN114816420A (zh) | 一种数据处理方法和装置 | |
US20080141230A1 (en) | Scope-Constrained Specification Of Features In A Programming Language | |
CN117519665B (zh) | 一种模型驱动的汇编器自动生成方法及装置 | |
CN111309301B (zh) | 程序语言转换方法、装置和转换设备 | |
CN113032366A (zh) | 基于Flex和Bison的SQL语法树解析方法 | |
CN117149215A (zh) | 反汇编信息输出方法、装置、电子设备及存储介质 | |
US20070150876A1 (en) | Method and system for compiling a source code | |
CN115129320B (zh) | 一种基于循环不变式的间接跳转目标地址识别方法及装置 | |
CN114791811B (zh) | 一种基于元函数模板的汇编器实现方法 | |
KR102614967B1 (ko) | 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법 | |
Bezzubikov et al. | Automatic dynamic binary translator generation from instruction set description | |
Paakki | Prolog in practical compiler writing | |
CN118103815A (zh) | 编译方法以及用于编译的装置 | |
Maliavko et al. | The functionally-imperative programming language El and its translator | |
CN117270967B (zh) | 基于模型驱动的指令集架构模拟器自动生成方法及装置 | |
CN116701433A (zh) | 一种函数文本解析处理方法、系统、终端及存储介质 | |
KARAPATEAS | RETARGETING AN ASSEMBLY OPTIMIZER FOR THE MIPS/SCALE ASSEMBLY | |
Borjigin | Basic Python Programming for Data Science | |
Vermeir | An introduction to compilers | |
Maliavko et al. | Functionally Imperative Programming Language El and its Implementation |
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 |