[发明专利]一种临时变量的数据区分配方法有效
申请号: | 201810329161.3 | 申请日: | 2018-04-13 |
公开(公告)号: | CN108804222B | 公开(公告)日: | 2021-07-27 |
发明(设计)人: | 谭良良;陈宏君;张磊;文继锋;徐睿;熊蕙;周磊;曾凯;刘坤;顾熹;谭林丰 | 申请(专利权)人: | 南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F8/41 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 葛潇敏 |
地址: | 211102 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 临时 变量 数据 区分 配方 | ||
本发明公开一种临时变量的数据区分配方法,步骤是:首次编译形成指令时,临时变量采用不重复的最大化分配策略;遍历临时变量数据区,遍历指令区,获取各个临时变量的首次引用及最后引用的指令行号,形成每个临时变量的作用域;对按照变量类型组织的各子组进行临时变量合并:对同组内时作用域无交集的临时变量按照最近邻合并贪心算法进行合并,合并为1个子集的临时变量分配同一个虚拟寄存器;调整指令,将指令区的各个临时变量替换为对应虚拟寄存器;汇总虚拟寄存器,并删除原临时变量区,用新的虚拟寄存器组替换。此种方法在编译IEC61131的ST代码时,能精简临时变量数据区,减少数据区大小,满足嵌入式系统资源有限的约束。
技术领域
本发明属于工业控制编程领域,特别涉及结构化文本编译过程中临时变量的数据区合并处理方法。
背景技术
IEC61131标准定义的结构化文本编程语言(ST)是高级编程语言,适用于工业控制应用开发。结构化文本有很多语句表达式,语句表达式在转换处理时需使用若干临时变量。由于工控应用存在单个程序组织单元的程序在线无扰更新的需求,故不能直接编译为嵌入式系统直接运行的目标文件,而是形成中间二进制伪指令文件,采用解释执行的方式。在翻译为解释执行的二进制指令时,涉及到的临时变量分配使用,临时变量作为数据区的一部分,数据区存在长久的生命周期。由于嵌入式系统内存空间有限,不能无节制的最大化分配临时变量,需要在不影响程序安全正确运行的情况下,精简合并临时变量。尚未有文献提出同时满足上述需求的可行解决方案,为了解决上述问题,提出一种安全的时分复用的临时变量数据区分配方案,本案由此产生。
发明内容
本发明的目的,在于提供一种临时变量的数据区分配方法,其在编译IEC61131的ST代码时,能精简临时变量数据区,减少数据区大小,满足嵌入式系统资源有限的约束。
为了达成上述目的,本发明的解决方案是:
一种临时变量的数据区分配方法,包括如下步骤:
步骤1,首次编译形成指令时,临时变量采用不重复的最大化分配策略;
步骤2,遍历临时变量数据区,该临时变量数据区按照变量类型进行分组而形成,遍历指令区,获取各个临时变量的首次引用的指令行号、最后引用的指令行号,形成每个临时变量的作用域[L1,L2],其中,L1表示首次引用的指令行号,L2表示最后引用的指令行号;
步骤3,对按照变量类型组织的各子组进行临时变量合并:对同组内时作用域无交集的临时变量按照最近邻合并贪心算法进行合并,合并为1个子集的临时变量分配同一个虚拟寄存器;
步骤4,调整指令,将指令区的各个临时变量替换为对应虚拟寄存器;汇总虚拟寄存器,并删除原临时变量区,用新的虚拟寄存器组替换。
上述步骤1中,指令采用三地址码方式描述。
上述步骤1中,数据区包括全局变量和临时变量,在编译过程中,存储、使用表达式中间计算结果时每新增1个临时变量,就在数据区申请1个节点。
上述步骤2中,进行分组的变量类型包括布尔类型、1/2/4/8字节整型有符号、1/2/4/8字节整型无符号、4/8字节浮点型和字符串型。
上述步骤3中,最近邻合并贪心算法的内容是:对变量类型相同的临时变量,从第1个临时变量开始往后遍历,对于作用域无交集的临时变量,合并为1个子集,该子集的作用域合并;通过多次遍历,直至各个临时变量、子集不能合并为止。
上述步骤4中,同一变量类型的独立子集各占用1个虚拟寄存器,未合并的临时变量各占用1个虚拟寄存器,不同变量类型的虚拟寄存器按照前述原则顺次分配。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司,未经南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810329161.3/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置