【技术实现步骤摘要】
本专利技术涉及对于处理器中具有专用寄存器组的嵌入式软件开发,特别涉及。
技术介绍
高级语言的设计目的是让程序按照人类的思维和语言习惯书写,它是面向程序员的。在嵌入式领域被广泛使用的高级语言是C语言。计算机能够直接识别和执行的不是高级语言,而是用二进制代码表示的机器指令的集合,即机器语言。汇编语言用助记符代替了二进制机器指令,但是仍然是硬件操作的控制信息,所以它和机器语言一样都是面向机器的低级语言。高级语言书写的源程序需要变换成机器语言目标代码才能在计算机上运行,这个变换通常包含两个阶段前一个阶段是将源程序变换成汇编语言的表示,后一个阶段则是将汇编表示变换成机器语言目标代码。后一个阶段是由汇编器、链接器来完成的,与本专利技术无关。前一个阶段是由编译器来完成的,本专利技术的工作也都集中在这个阶段。后文中的编译,如果没有特别指明,表示的就是从高级语言的源程序变换到汇编语言表示的过程。编译器的工作可以分为若干阶段,通常划分为词法分析、语法分析、语义分析、中间代码生成、代码优化和代码生成阶段,参见文献1《编译原理和技术(第二版)》,陈意云,1997年。编译器的这些阶段常常又被分为前端和后端。前端只依赖于源语言,通常包括前三个阶段,即词法分析、语法分析和语义分析。前端对源程序进行不同的分析,以解释源程序的结构和基本数据,决定它们的含义。其中,语义分析阶段检查程序的语义正确性,并为以后的代码生成阶段收集类型信息,它使用语法分析阶段确定的语法树来表示表达式和语句的算符和运算对象。编译器在中间代码生成阶段会产生源程序的中间表示。中间表示是一种抽象机的程序,易于产生,而且 ...
【技术保护点】
一种支持用规则记录变量访问专用寄存器组的处理方法,通过扩展编译器的功能,对于嵌入式处理器中普遍存在的专用寄存器组,在高级语言源程序中将专用寄存器组定义为具有一定属性的规则记录变量来进行访问,具体包括如下四点:1)定义一种类型属性,以 标识需要放入专用寄存器组的规则记录变量类型;2)设计规则记录变量的语法树结构,用递归算法实现计算规则记录变量各成员相对位置;其中变量的名称、类型、成员域、大小和一般的变量语法树结构相同,增加表示步骤1)所述类型属性的特征比特位,并忽 视规则记录变量以及其成员域的对齐要求信息;规则记录变量的成员域在语法树结构中用链表表示,成员是一般变量的语法树结构;3)设计规则记录变量的中间表示;该结构包括规则记录变量和它每个成员域对应的专用寄存器编号、大小、起始比特和结束比特; 生成规则记录变量的中间表示的算法包括:遍历规则记录变量语法树结构的成员链,根据成员的相对位置和大小计算所占用的专用寄存器编号、起始比特和结束比特,同时指示编译器专用寄存器不参与寄存器分配;4)生成利用规则记录变量访问专用寄存器组的代 码;所用 ...
【技术特征摘要】
1.一种支持用规则记录变量访问专用寄存器组的处理方法,通过扩展编译器的功能,对于嵌入式处理器中普遍存在的专用寄存器组,在高级语言源程序中将专用寄存器组定义为具有一定属性的规则记录变量来进行访问,具体包括如下四点1)定义一种类型属性,以标识需要放入专用寄存器组的规则记录变量类型;2)设计规则记录变量的语法树结构,用递归算法实现计算规则记录变量各成员相对位置;其中变量的名称、类型、成员域、大小和一般的变量语法树结构相同,增加表示步骤1)所述类型属性的特征比特位,并忽视规则记录变量以及其成员域的对齐要求信息;规则记录变量的成员域在语法树结构中用链表表示,成员是一般变量的语法树结构;3)设计规则记录变量的中间表示;该结构包括规则记录变量和它每个成员域对应的专用寄存器编号、大小、起始比特和结束比特;生成规则记录变量的中间表示的算法包括遍历规则记录变量语法树结构的成员链,根据成员的相对位置和大小计算所占用的专用寄存器编号、起始比特和结束比特,同时指示编译器专用寄存器不参与寄存器分配;4)生成利用规则记录变量访问专用寄存器组的代码;所用算法分两模块从专用寄存器组提取规则记录变量成员数据的数据提取模块和将规则记录变量成员数据存储到专用寄存器组的数据存储模块;其中,所述数据提取模块分三个过程数据对齐、数据无关位屏蔽和专用寄存器读写;所述数据存储模块的过程为上述三个过程的逆过程;每个过程根据数据大小和位置选择合适的处理器指令或指令组合生成代码。2.根据权利要求1所述的支持用规则记录变量访问专用寄存器组的处理方法,其特征在于,步骤2)中的所述递归算法在编译器分析到类型属性信息后遍历规则记录变量语法结构中的成员链,不考虑成员的类型和对齐要求计算成员在规则记录变量中的偏移,重置编译器在建立成员语法树结构时计算的位置信息。3.一种支持用规则记录变量访问专用寄存器组的处理方法,处理流程如下1)在编译器中增加对一种高级语言的类型属性的支持,对源程序中的规则记录变量进行检验,如果具有该类型属性,则编译器将其识别为需要放到专用寄存器组中;如果没有该类型属性,则编译器按照已知的方法进行处理;2)编译器前端根据类型属性识别出需要放入专用寄存器组的规则记录变量,将为其建立语法树的结构,将语法树结构中对应与该属性的特征比特置1,并且根据变量信息设置语法树结构的对应域;3)编译器的中间代码生成阶段对于特征比特为0的语法树结构,按照普通变量进行处理,而对于步骤2)中生成的语法树结构,将为变量和它每个子域建立对应的中间表示,包括其对应的专用寄存器编号、大小、起始比特和结束比特;4)编译器的后端利用步骤3)中生成的中间表示进行代码生成。4.根据权利要求3所述的支持用规则记录变量访问专用寄存器组的处理方法,其特征在于,所述步骤1)包括如下子步骤步骤1.1增加编译器内部的属性数组的长度,使其能够容纳新添的这种属性;步骤1.2修改属性数组的初始化函数,使得新添的这种属性参数能够被正确初始化,同时编译器在进行词法分析和语法分析时能够识别这种属性。5.根据权利要求3所述的支持用规则记录变量访问专用寄存器组的处理方法,其特征在于,所述步骤2)包括如下子步骤步骤2.1修改编译器内部对语法树结构的定义,增加和该属性对应的特征比特;步骤2.2编译器在进行语法分析时,对于变量定义将建立对应的语法树结构,并且将对应这种属性的标志比特置1;步骤2.3编译器对变量类型进行分析,根据变量的名称、类型、域,填充语法树结构,根据专用寄存器组使用规范递归计算规则记录变量各...
【专利技术属性】
技术研发人员:贾耀仓,桂剑,霍玮,谷晓铭,张兆庆,冯晓兵,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。