一种模型驱动的汇编器自动生成方法及装置

文档序号:37001579发布日期:2024-02-09 12:45阅读:17来源:国知局
一种模型驱动的汇编器自动生成方法及装置

本发明涉及指令集汇编器实现,尤其涉及一种模型驱动的汇编器自动生成方法及装置。


背景技术:

1、汇编器是编译系统中重要的组成部分,其主要功能是将汇编语言编写的源程序代码编译成二进制指令的目标文件。汇编器的输入为汇编语言程序代码,这些程序代码可以是高级语言编译器编译输出的汇编代码,也可以是手工编写的汇编语言程序代码,汇编器的输出为二进制指令的目标文件。汇编指令与二进制指令之间是一一对应的关系,是直译的过程。实现汇编器的难点在于如何高效地定义两者之间的映射转换关系,以及如何自适应的应对指令集体系结构的扩展变化。

2、对于不同的指令集体系结构(instruction setarchitecture,简称isa)均需要分别独立开发不同的汇编器,以满足不同目标处理器的要求。且汇编器一般是伴随目标处理器的设计而协同开发的,因此,在设计新的处理器时,需要重新开发与之相对应的汇编器。不同的目标处理器在指令字长、指令编码方式、寄存器设置和功能单元数目等方面都有所不同,使得汇编器在设计和实现上也均会有很大的不同。另外,处理器的结构不同以及设计思想的不同也会导致汇编器在设计和实现方法上的差异性。且由于这种差异性的存在,对每一种新的isa或者对原有的isa进行改进和扩展时,都需要重新开发与之相适应的汇编器。

3、现有技术中汇编器通常都是直接根据已经设计好的指令集架构,按照指令集手册的指令编码和指令格式手工编程实现,即需要依赖于人工编程方式实现。然而,在新指令集架构的设计过程中,指令集的并不是固定不变的,在不断的迭代改进和优化中,或者根据应用需求在不断的更新和扩展中指令集均可能发生变化。而对于每一次的指令集迭代版本,都需要快速的提供工具链和汇编器来测试、验证和评估本次版本指令集的性能。因而人工编程方式需要不断实现指令格式和指令编码设计与更新,每一次的指令集更新都需要耗费大量的人力资源和时间成本进行手工编程实现汇编器,开发效率低且还易于出错,无法动态适应指令集架构的改进和扩展,难以满足当前对于新指令集架构设计的快速迭代和探索需求。


技术实现思路

1、本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现简单、成本低、智能化程度以及效果高、可扩展性好以及灵活性强的模型驱动的汇编器自动生成方法及装置。

2、为解决上述技术问题,本发明提出的技术方案为:

3、一种模型驱动的汇编器自动生成方法,步骤包括:

4、s01.构建生成指令集架构汇编器所需的汇编器描述模型,所述汇编器描述模型包括指令集架构的指令名称描述、指令编码字段描述、指令编码字段语法匹配规则描述以及指令项描述;

5、s02.根据所述汇编器描述模型,分别生成指令正则语法索引表、指令字段编码变换序列索引表以及指令名称与指令项索引的映射表,所述指令名称与指令项索引的映射表记录指令集中的所有指令的指令名称与其指令项索引的映射关系;

6、s03.读取汇编器的目标汇编程序代码,分别生成汇编指令索引表、汇编指令程序地址索引表、汇编指令长度索引表、汇编指令并行执行标记索引表、汇编指令二进制编码索引表以及标号与索引及程序地址映射表,所述标号与索引及程序地址的映射表记录指令集中的目标汇编程序中的所有与标号与索引及程序地址的映射关系;

7、s04.根据汇编指令索引值依次获取一条汇编指令,并根据步骤s02、步骤s03生成的各索引表、映射表将获取的汇编指令转换为对应的二进制编码,保存到所述汇编指令二进制编码索引表中;

8、s05.完成所有汇编指令的二进制编码后,输出编码结果。

9、进一步的,所述指令名称描述用于声明指令集包含的所有指令名称集合,所述指令编码字段描述用于声明指令集中指令格式出现的编码字段,所述指令编码字段语法匹配规则描述用于声明指令集中指令格式的编码字段语法匹配规则,所述指令项描述用于声明指令集中的所有指令项。

10、进一步的,所述指令编码字段描述包括多个指令编码字段二元组,每一个指令编码字段二元组包括编码字段名称、编码字段正则语法描述规则,所述指令编码字段语法匹配规则包括多个指令编码字段语法匹配规则七元组,每一个指令编码字段语法匹配规则七元组包括匹配规则名称、匹配模式、解析语法、解析内容块索引、解析内容映射实例、解析内容的二进制编码长度和匹配条目。

11、进一步的,所述指令项描述包括多个指令项五元组,每一个指令项五元组是由指令名称、指令长度、解析语法、汇编语法和编码字段序列组成,所述编码字段序列包括多个元组,每一个元组包括字段源、索引号、字段长度、匹配规则和默认编码。

12、进一步的,所述指令正则语法索引表按索引顺序记录指令集中的所有指令项的指令正则语法,所述指令字段编码变换序列索引表按索引顺序记录指令集中的所有指令项的指令字段编码变换序列。

13、进一步的,所述汇编指令索引表按索引顺序记录目标汇编程序中的所有汇编指令,所述汇编指令程序地址索引表按索引顺序记录目标汇编程序中的所有汇编指令的程序地址,所述汇编指令长度索引表按索引顺序记录目标汇编程序中的所有汇编指令的指令长度,所述汇编指令并行执行标记索引表按索引顺序记录目标汇编程序中的所有汇编指令的并行执行标记,所述汇编指令二进制编码索引表按索引顺序记录目标汇编程序中的所有汇编指令的二进制编码,所述标号与索引及程序地址的映射表中的每个条目包括标号、索引及程序地址。

14、进一步的,步骤s04包括:

15、s4.1.根据当前的汇编指令索引值,从所述汇编指令索引表中获得一条汇编指令;

16、s4.2.根据当前获取的汇编指令的首字符是否为并行执行标记,设置汇编指令并行执行标记索引表中对应索引位置的值;

17、s4.3.在指令名称描述集合中以正则语法搜索汇编指令,获得汇编指令名称;

18、s4.4.根据所述汇编指令名称,从所述指令名称与指令项索引的映射表中获取指令名称对应的索引值集合;

19、s4.5.依次根据所述指令名称对应的索引值集合中索引值从所述指令正则语法索引表中获取指令正则语法,在获取的指令正则语法中以正则语法搜索汇编指令,并确定汇编指令对应的正确索引值;

20、s4.6.根据确定的正确索引值从所述指令字段编码变换序列索引表中获取当前汇编指令对应的指令字段编码变换序列;

21、s4.7.根据所述指令字段编码变换序列对汇编指令进行二进制编码变换,获得汇编指令的二进制编码;

22、s4.8.依次更新汇编指令长度索引表、汇编指令程序地址索引表、标号与索引及程序地址的映射表,最后根据汇编指令并行执行标记索引表更新所有含并行执行标记的汇编指令的二进制编码。

23、进一步的,步骤s4.2中,若获取的汇编指令的首字符为并行执行标记,则汇编指令并行执行标记索引表中对应索引位置的值设为1,否则设为0。

24、进一步的,步骤s4.8包括:

25、根据汇编指令的二进制编码长度确定汇编指令的指令长度,并更新所述汇编指令长度索引表;

26、根据当前更新的所述汇编指令长度索引表,更新汇编指令程序地址索引表;

27、根据当前更新的所述指令程序地址索引表,更新所述标号与索引及程序地址的映射表;

28、根据当前更新的所述标号与索引及程序地址的映射表,更新所有含标号的汇编指令的二进制编码。

29、一种模型驱动的汇编器自动生成装置,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序以执行如上述方法。

30、与现有技术相比,本发明的优点在于:

31、1、本发明通过先构建生成指令集架构汇编器所需的汇编器描述模型,根据该汇编器描述模型分别生成指令相关的索引表以及指令名称与指令项索引的映射表,再读取汇编器的目标汇编程序代码,分别生成汇编指令相关的索引表以及标号与索引及程序地址映射表,最后依据生成的指令相关的索引表、汇编指令相关的索引表以及两个映射表将汇编指令转换为对应的二进制编码,可以基于汇编器描述模型驱动实现汇编器的自动化生成,能够显著提升汇编器的开发效率、缩短开发周期,有效保证所生成的汇编器的正确性。

32、2、本发明能够动态的适应指令集架构的改进和扩展,当需要支持增减或扩展新的指令而使得指令集动态变化时,只需要修改模型即能够快速、自动生成新的汇编器,无需重新进行汇编器设计以及实现,能够大幅度的减少开发和维护成本和难度,避免重复的设计实现过程,提高汇编器实现的可扩展性能。

33、3、本发明进一步通过构建指令名称描述集合,能够精准识别出一条汇编语句的具体指令名称,无需如传统汇编器需要根据汇编程序指令顺序对每一条汇编指令都遍历语法匹配规则,能够显著减少匹配次数,进一步提升汇编速度。

34、4、本发明进一步通过构建正则表达式语法规则描述汇编器语法,能够快速生成指令解析模块,无需如传统汇编器需要根据不同指令集定制相应的指令解析模块,当指令语法发生变动时,无需大幅度修改或增加指令解析模块,能够进一步提升迭代开发进度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1