一种临时变量的数据区分配方法

    公开(公告)号:CN108804222A

    公开(公告)日:2018-11-13

    申请号:CN201810329161.3

    申请日:2018-04-13

    IPC分类号: G06F9/50 G06F8/41

    CPC分类号: G06F9/5016 G06F8/41

    摘要: 本发明公开一种临时变量的数据区分配方法,步骤是:首次编译形成指令时,临时变量采用不重复的最大化分配策略;遍历临时变量数据区,遍历指令区,获取各个临时变量的首次引用及最后引用的指令行号,形成每个临时变量的作用域;对按照变量类型组织的各子组进行临时变量合并:对同组内时作用域无交集的临时变量按照最近邻合并贪心算法进行合并,合并为1个子集的临时变量分配同一个虚拟寄存器;调整指令,将指令区的各个临时变量替换为对应虚拟寄存器;汇总虚拟寄存器,并删除原临时变量区,用新的虚拟寄存器组替换。此种方法在编译IEC61131的ST代码时,能精简临时变量数据区,减少数据区大小,满足嵌入式系统资源有限的约束。

    一种计算机程序语言的编译方法和编译器

    公开(公告)号:CN107301079A

    公开(公告)日:2017-10-27

    申请号:CN201710365323.4

    申请日:2017-05-22

    IPC分类号: G06F9/45

    摘要: 本发明实施例公开了一种计算机程序语言的编译方法,包括:对结构化文本ST语言的循环语句进行预处理后,至少获取循环语句的初始值表达式、终止值表达式、循环增量表达式和循环执行语句;对初始值表达式和终止值表达式分别进行编译,得到初始值表达式的值和终止值表达式的值;将初始值表达式的值确定为循环语句的索引值;基于循环增量表达式的类型,从初始值表达式的值和终止值表达式的值中确定出循环语句的上界和循环语句的下界;基于循环语句的上界、循环语句的下界、循环语句的索引值和循环增量表达式,对循环执行语句进行编译,得到循环语句的编译结果。本发明实施例还同时公开了一种编译器。

    一种解析器的快速执行方法及快速执行系统

    公开(公告)号:CN107015840A

    公开(公告)日:2017-08-04

    申请号:CN201710161150.4

    申请日:2017-03-17

    IPC分类号: G06F9/45

    摘要: 本发明公开一种解析器的快速执行方法,首先获取指令文件,然后构建指令数组,读取指令文件,根据指令类型编码,和预先编译的指令执行函数关联,按照指令个数动态创建指令数组;运行过程中调度执行指令数组,从0开始按照递增数组下标的顺序执行,当执行到JUMP、BREAK指令,将当前执行的数组下标修改为JUMP、BREAK指令记录的跳转目的标号,之后顺次执行从新下标起始对应的指令。本发明还公开一种解析器的快速执行系统,包括指令获取模块、指令函数模块、指令构建模块以及指令调度模块。此种技术方案在提高解析器的执行效率的同时,还能支持ST语句的流程跳转语句和支持可变形参指令,保证解析器支持的ST语言功能完整性。

    一种组态软件系统及一种工业控制方法

    公开(公告)号:CN106933568A

    公开(公告)日:2017-07-07

    申请号:CN201710072095.1

    申请日:2017-02-07

    IPC分类号: G06F9/44 G06F9/45

    摘要: 本发明公开了一种组态软件系统及一种工业控制方法,其中所述组态软件系统包括:工程管理模块和程序仿真模块,其中:所述工程管理模块,用于管理与所述组态系统建立连接的至少包括第一装置的组态配置信息,并确定所述第一装置的组态配置信息;分层次显示所述至少包括第一装置的组态配置信息;所述程序仿真模块,用于根据所述第一装置的组态配置信息,获取所述第一装置的输入数据;将所述第一装置的输入数据输入至所述第一装置中的接口文件,并运行所述接口文件得到运行结果;将所述运行结果确定为所述第二装置的输入数据;将所述第二装置的输入数据输入至所述第二装置中的接口文件,并运行所述接口文件得到运行结果;输出所述运行结果。