[发明专利]一种选择语句优化编译方法有效
申请号: | 201710356936.1 | 申请日: | 2017-05-19 |
公开(公告)号: | CN107168761B | 公开(公告)日: | 2019-10-29 |
发明(设计)人: | 张磊;陈宏君;周磊;谭良良;刘克金;文继锋;徐卫峰;吴波 | 申请(专利权)人: | 南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 南京纵横知识产权代理有限公司 32224 | 代理人: | 耿英;董建林 |
地址: | 211102 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 选择 语句 优化 编译 方法 | ||
本发明公开一种选择语句优化编译方法。在语义分析阶段,针对IEC61131‑3的ST(结构化文本)语言的CASE(选择)语句进行优化编译,当判定CASE语句的各个分支求值表达式为单个常量模式时,采用直接跳转表的方式形成指令序列;当CASE分支求值表达式为多个常量或常量区间时,采用表达式短路求值和跳转表相结合的方式形成指令序列。本发明方法提高了ST语言中选择语句的翻译后指令执行的效率。
技术领域
本发明属于编译器处理领域,具体涉及一种IEC61131-3结构化文本编程语言选择语句编译优化的方法。
背景技术
在工业控制领域中,IEC61131-3是通用的国际标准,该标准定义了结构化文本ST的语法和文法,通常将ST语言翻译为二进制中间指令,然后解释执行。在ST语言中,CASE选择语句是使用频率较高的语句,ST语言定义的CASE语句文法为:
CASE expression OF
case_value1: statement list1
case_value2: statement list2
...
case_valueN: statement list2
ELSE statement listN+1
END CASE;
例如:
CASE Var OF
1: statement list1; (* Var=1执行语句1, *)
2,3: statement list2; (* Var=2或3执行语句2 *)
10..20: statement list3; (* 10<=Var<=20执行语句3*)
25,30..40: statement list4; (*Var=25或30<=Var<=40执行语句5 *)
ELSE statement listN+1; (* 上述分支条件不满足,执行该语句 *)
END CASE;
每个case分支的求值表达式可以是单个常量,可以是通过逗号,并列的多个常量,或通过..表示的范围。这种文法定义和PASCAL、C语言的定义存在较大不同,不能直接使用基于跳转表、查找表的翻译方法。通常的方法是转换为IF-ELSEIF-ELSE的等价语句,然后进行翻译。由于工业实时控制领域,对指令的运行效率要求极高,需要对CASE语句进行优化翻译。在实际使用过程中,选择语句的分支求值表达式在极大多数的情况下是常量,故在语义阶段,可对求值表达式进行类型分析,当所有分支的求值表达式都是单个常量时,可使用跳转表的翻译方法;当存在1个分支的求值表达式是多个常量或常量区间时,根据连接符号(,和..)的功能定义,可在跳转表中插入短路求值指令,提高执行效率。本案由此产生。
发明内容
本发明的目的是克服现有技术的不足,提高IEC61131-3标准的CASE(选择)语句执行效率,提供一种选择语句优化翻译方法。
为了实现该目的,本发明采用如下技术方案,其特征在于,对于基于IEC61131-3标准的ST结构化文本语言的CASE选择语句进行编译,根据CASE(选择)语句的各个分支求值表达式类型,采用对应的优化翻译模式,具体包括如下内容:
当各个分支求值表达式都是单个常量时,采用直接跳转表翻译模式;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司,未经南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710356936.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:语言的变量检测方法和装置
- 下一篇:一种基于本体的RUCM模型一致性检查方法