CN110488738B - 一种代码生成方法及装置 - Google Patents
一种代码生成方法及装置 Download PDFInfo
- Publication number
- CN110488738B CN110488738B CN201910667806.9A CN201910667806A CN110488738B CN 110488738 B CN110488738 B CN 110488738B CN 201910667806 A CN201910667806 A CN 201910667806A CN 110488738 B CN110488738 B CN 110488738B
- Authority
- CN
- China
- Prior art keywords
- code
- task code
- operand
- task
- operation mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/054—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
本申请公开了一种代码生成方法以及装置,其应用于可编程控制器,在获取了包括至少一个任务码的待处理代码,且确定该待处理代码中包括预设标识之后,先根据每一任务码中的各个指令,生成每一任务码对应的任务码存储空间以及任务码执行指令,再将每一任务码对应的任务码执行指令中的操作数替换为该操作数对应的操作数实际值,得到每一任务码对应的执行码。此时,由于在每一任务对应的执行码中包括了可以直接使用的操作数实际值,不包括需要进行段定位和地址解析的操作数,因而,当可编程控制器根据该执行码进行运行时,无需重新执行段定位以及数据地址解析的步骤,减少了可编程控制器运行代码时的执行步骤,从而提高了可编程控制器的执行效率。
Description
技术领域
本申请涉及车辆技术领域,尤其涉及一种代码生成方法及装置。
背景技术
随着车辆技术领域的发展,可编程控制器的使用越来越频繁。在实际应用中,首先,用户可以在上位机(例如,个人计算机)利用预设编程语言(例如,梯形图等编程语言)的编程系统中生成源程序;然后,在上位机的编程系统中将源程序转换为指令表语言下的代码,并将该指令表语言下的代码转换为中间码;此时可编程控制器可以采用如下两种方式来获取机器可识别的本地码:第一种方式是:可编程控制器直接下载上位机中生成的中间码,使得可编程控制器能够利用其自身所包括的解释器逐条解析该中间码,以便动态地生成机器可以识别的本地码。第二种方式是:在上位机编程系统中将中间码预编译为本地码,使得可编程控制器可以从上位机中直接下载本地码。
然而,无论可编程控制器采用上述提供的哪种方式来获取本地码,可编程控制器运行本地码时的代码执行效率均较低。因而,如何提高可编程控制器的代码执行效率成为了一个亟待解决的问题。
发明内容
为了解决现有技术中存在的以上技术问题,本申请提供一种代码生成方法及装置,其生成的代码能够减少可编程控制器运行该代码时的执行步骤,从而提高可编程控制器的执行效率。
为了实现上述目的,本申请提供的技术方案如下:
本申请提供一种代码生成方法,应用于可编程控制器,所述方法包括:
获取待处理代码;所述待处理代码包括至少一个任务码;
若确定所述待处理代码中包括预设标识,则根据每一任务码中的各个指令,生成所述每一任务码对应的任务码存储空间以及任务码执行指令;每一任务码存储空间包括指令存储子空间、输入参数存储子空间和初始化参数存储子空间;所述指令存储子空间用于存储所述任务码执行指令;所述输入参数存储子空间和初始化参数存储子空间均用于存储操作数实际值;
将所述每一任务码对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码对应的执行码。
可选的,所述待处理代码为中间码或本地码;
和/或,所述操作数实际值为函数调用的指针或实际数据值。
可选的,当所述每一任务码包括至少一种运行模式时,所述根据每一任务码中的各个指令,生成所述每一任务码对应的任务码存储空间以及任务码执行指令,具体包括:
根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间以及任务码执行指令;
所述将所述每一任务码对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码对应的执行码,具体包括:
将所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码在每一运行模式下对应的执行码。
可选的,所述根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间,具体包括:
解析每一任务码在每一运行模式下的各个指令,获取每一任务码在每一运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值;
根据每一任务码在每一运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值进行存储空间分配,获取每一任务码在每一运行模式下对应的指令存储子空间、输入参数存储子空间和初始化参数存储子空间。
可选的,所述根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码执行指令,具体包括:
遍历每一任务码在每一运行模式下的各个指令,生成每一任务码在每一运行模式下对应的任务码执行指令。
可选的,所述根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间之后,还包括:
将所述每一任务码在每一运行模式下对应的任务码存储空间链接到任务控制指令中。
可选的,所述将所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,具体包括:
获取所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数以及所述操作数对应的操作数实际值的存储地址;
根据所述操作数对应的操作数实际值的存储地址,在所述输入参数存储子空间或初始化参数存储子空间中进行查询,得到所述操作数对应的操作数实际值;
利用所述操作数对应的操作数实际值替换所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数。
可选的,所述获取所述每一任务码在每一运行模式下对应的任务码执行指令中所述操作数对应的操作数实际值的存储地址,具体包括:
获取所述每一任务码在每一运行模式下对应的任务码执行指令中所述操作数对应的操作数实际值的参数存储空间标识和地址偏移值;
根据所述操作数对应的操作数实际值的参数存储空间标识和地址偏移值,生成所述操作数对应的操作数实际值的存储地址。
可选的,所述每一任务码包括系统运行模式和普通运行模式中的至少一个。
本申请还提供了一种代码生成装置,应用于可编程控制器,所述装置包括:
获取单元,用于获取待处理代码;所述待处理代码包括至少一个任务码;
生成单元,用于若确定所述待处理代码中包括预设标识,则根据每一任务码中的各个指令,生成所述每一任务码对应的任务码存储空间以及任务码执行指令;每一任务码存储空间包括指令存储子空间、输入参数存储子空间和初始化参数存储子空间;所述指令存储子空间用于存储所述任务码执行指令;所述输入参数存储子空间和初始化参数存储子空间均用于存储操作数实际值;
替换单元,用于将所述每一任务码对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,作为所述每一任务码对应的执行码。
与现有技术相比,本申请至少具有以下优点:
本申请提供的应用于可编程控制器的代码生成方法以及装置,在获取了包括至少一个任务码的待处理代码,且确定该待处理代码中包括预设标识之后,先根据每一任务码中的各个指令,生成每一任务码对应的任务码存储空间以及任务码执行指令,再将每一任务码对应的任务码执行指令中的操作数替换为该操作数对应的操作数实际值,得到每一任务码对应的执行码。此时,由于在每一任务对应的执行码中包括了可以直接使用的操作数实际值,不包括需要进行段定位和地址解析的操作数,因而,当可编程控制器根据该执行码进行运行时,无需重新执行段定位以及数据地址解析的步骤,减少了可编程控制器运行代码时的执行步骤,从而提高了可编程控制器的执行效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请提供的应用于可编程控制器的代码生成方法的第一种实施方式的示意图;
图2为本申请提供的应用于可编程控制器的代码生成方法的第二种实施方式的示意图;
图3为本申请方法实施例一提供的代码生成方法的流程图;
图4为本申请实施例提供的可编程控制器中代码处理过程;
图5为本申请实施例提供的预设标识的示例;
图6为本申请实施例提供的不同任务码对应的存储空间的分配示意图;
图7为本申请方法实施例二提供的代码生成方法的流程图;
图8为本申请装置实施例提供的代码生成装置的结构示意图。
具体实施方式
目前,应用于可编程控制器的代码生成方法可以包括两种实施方式,为了便于理解和解释,下面将结合附图依次介绍这两种实施方式。
作为第一种实施方式,如图1所示,应用于可编程控制器的代码生成方法,具体可以为:首先,用户在上位机(例如,个人计算机(personal computer,PC))的编程系统中利用预设编程语言生成源程序;其次,在上位机的编程系统中将源程序转换为指令表语言下的代码,并将该指令表语言下的代码转换为中间码;然后,将上位机中生成的中间码下载到可编程控制器(Programmable Logic Controller,PLC)中;最后,PLC利用其自身所包括的解释器逐条解析中间码,以便动态地生成机器可以识别的本地码,使得后续PLC运行该本地码。
其中,预设编程语言可以是梯形图(LadderLogic Programming Language,LAD)、功能区块图(Function Block Diagram,FBD)、顺序功能图(Sequential Function Chart,SFC)、连续功能图(Continuous Function Chart,CFC)、结构文本(Structured Text,ST)和指令表(Instruction List,IL)中的任一种编程语言。
另外,中间码是一种字节码,而且,该中间码能够被PLC中所包括的解释器解释执行。例如,中间码可以是汇编语言代码。
作为第二种实施方式,如图2所示,应用于可编程控制器的代码生成方法,具体可以为:首先,用户在上位机(例如,个人计算机(personal computer,PC))的编程系统中利用预设编程语言生成源程序;其次,在上位机的编程系统中将源程序转换为指令表语言下的代码,将该指令表语言下的代码转换为中间码,并将中间码预编译为机器可以识别的本地码;然后,将上位机中生成的本地码下载到PLC中,以便后续PLC运行该本地码。
经过研究发现,当PLC运行采用上述两种代码生成方法所生成的本地码时,PLC的代码执行效率较低,而且,导致PLC的代码执行效率较低的原因为:由于采用上述两种代码生成方法所生成的本地码中均包括了操作数,使得在本地码的运行过程中需要重新执行段定位以及数据地址解析的步骤来获得该操作数对应的操作数实际值,因而,当PLC运行本地码时,PLC需要在本地码的运行过程中重新执行段定位以及数据地址解析的步骤来获取操作数实际值,增加了可编程控制器运行代码时的执行步骤,从而降低了可编程控制器的代码执行效率。
为了解决上述问题,本申请提供了一种应用于可编程控制器的代码生成方法,且该方法为:在获取了包括至少一个任务码的待处理代码,且确定该待处理代码中包括预设标识之后,先根据每一任务码中的各个指令,生成每一任务码对应的任务码存储空间以及任务码执行指令,再将每一任务码对应的任务码执行指令中的操作数替换为该操作数对应的操作数实际值,得到每一任务码对应的执行码。此时,由于在每一任务对应的执行码中包括了可以直接使用的操作数实际值,不包括需要进行段定位和地址解析的操作数,因而,当可编程控制器根据该执行码进行运行时,无需重新执行段定位以及数据地址解析的步骤,减少了可编程控制器运行代码时的执行步骤,从而提高了可编程控制器的执行效率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
方法实施例一
参见图3,该图为本申请方法实施例一提供的代码生成方法的流程图。
本申请实施例提供的应用于可编程控制器的代码生成方法,包括步骤S31-S33:
S31:获取待处理代码。
待处理代码可以是中间码,也可以是本地码;而且,本申请不限定待处理代码的来源,例如,待处理代码可以是从上位机下载下来的,也可以是从PLC的存储空间中读取的。
需要说明的是,在本申请中,中间码的处理过程与本地码的处理过程相同,因而,本申请提供的代码生成方法可以用于生成中间码对应的执行码,以便后续PLC能够利用解释器对该中间码对应的执行码进行解析运行;而且,本申请提供的代码生成方法也可以用于生成本地码对应的执行码,以便后续PLC能够直接运行该本地码对应的执行码。
另外,待处理代码可以是利用LAD、FBD、SFC、CFC、ST、IL中的任一种编程语言进行编程得到的,还可以是利用IEC 61131-3标准语言中的任一种编程语言进行编程得到的,本申请对此不做具体限定。
此外,由于待处理代码通常可以用于实现至少一个待执行的任务(例如,循环任务、周期任务或中断任务等任务),而且,每一个任务均对应一个任务码,因而,待处理代码包括至少一个任务码,且每一个任务码均用于实现一个待执行的任务。
S32:若确定所述待处理代码中包括预设标识,则根据每一任务码中的各个指令,生成所述每一任务码对应的任务码存储空间以及任务码执行指令。
预设标识用于标记该待处理代码可以被PLC兼容,也就是说,若待处理代码中包括了预设标识,则表示该待处理代码可以被PLC兼容;若待处理代码中未包括该预设标识,则表示该待处理代码不可以被PLC兼容。
预设标识可以预先设定,而且预设标识可以在待处理代码的生成过程中添加至待处理代码中。例如,如图4所示,预设标识可以在根据源程序生成指令表的过程中进行添加,而且,预设标识可以采用如图5所示的标识。
任务码存储空间与任务码具有一一对应的关系,而且,每一任务码存储空间用于存储对应任务码的执行指令、输入参数以及初始化参数等相关信息。作为示例,当待处理代码包括第一任务码、第二任务码和第三任务码,且第一任务码对应于第一任务码存储空间、第二任务码对应于第二任务码存储空间、第三任务码对应于第三任务码存储空间时,第一任务码存储空间中存储有第一任务码的执行指令、输入参数以及初始化参数等相关信息,第二任务码存储空间中存储有第二任务码的执行指令、输入参数以及初始化参数等相关信息,第三任务码存储空间中存储有第三任务码的执行指令、输入参数以及初始化参数等相关信息。
另外,为了便于进行指令或参数的查询,可以将任务码存储空间划分为多个存储子空间,因而,在本申请中,每一个任务码存储空间均可以包括指令存储子空间、输入参数存储子空间和初始化参数存储子空间。
其中,指令存储子空间用于存储任务码执行指令;而且,为了节约存储空间,待处理代码中所包括的各个任务码可以共享一个指令存储子空间。作为示例,如图6所示,当待处理代码包括第一任务码和第二任务码时,第一任务码的任务码存储空间包括待处理代码对应的指令存储子空间,且第二任务码的任务码存储空间包括待处理代码对应的指令存储子空间。此时,第一任务码和第二任务码共享“待处理代码对应的指令存储子空间”。
输入参数存储子空间用于存储操作数实际值,具体用于存储每一任务码中所涉及的输入参数;而且,为了能够准确地区分不同任务码中的输入参数,可以使得不同任务码分别对应于不同输入参数存储子空间,此时,每一任务码对应的输入参数存储子空间内可以存储该任务码中所涉及的内部变量、缓存变量等。作为示例,如图6所示,当待处理代码包括第一任务码和第二任务码时,第一任务码的任务码存储空间包括第一任务码对应的输入参数存储子空间,且第二任务码的任务码存储空间包括第二任务码对应的输入参数存储子空间。此时,由于第一任务码对应的输入参数存储子空间与第二任务码对应的输入参数存储子空间是不同的存储空间,因而,第一任务码和第二任务码分别对应于不同的输入参数存储子空间。
初始化参数存储子空间用于存储操作数实际值,具体用于存储每一任务码中所涉及的初始化参数(例如,该初始化参数可以为被调用的函数中所涉及的初始化参数);而且,为了节约存储空间,待处理代码中所包括的各个任务码可以共享一个初始化参数存储子空间。作为示例,如图6所示,当待处理代码包括第一任务码和第二任务码时,第一任务码的任务码存储空间包括待处理代码对应的初始化参数存储子空间,且第二任务码的任务码存储空间包括待处理代码对应的初始化参数存储子空间。此时,第一任务码和第二任务码共享“待处理代码对应的初始化参数存储子空间”。
需要说明的是,在本申请中,操作数与操作数实际值具有一一对应的关系。其中,操作数是一种在PLC运行代码的过程中不可直接使用且需进行段定位以及地址解析的参数,例如,操作数可以是函数中的形参,也可以是执行指令中的中间参数;而且,操作数可以存在于各个指令中。操作数实际值是一种在PLC运行代码的过程中能够直接使用的参数,例如,操作数实际值可以是函数中的实参、函数调用的指针、或其他能够直接使用的实际数据值;而且,操作数实际值存储于输入参数存储子空间或初始化参数存储子空间中。
任务码执行指令与任务码具有一一对应的关系,而且,每一任务码执行指令用于记录对应任务码所需的各个指令。例如,当一个任务码运行时需要执行T个指令时,则该任务码对应的任务码执行指令用于记录该T个指令。
另外,由于在本申请中每一任务可以运行在不同的运行模式下,因而,每一任务码可以包括至少一种运行模式,例如,每一任务码可以包括系统运行模式和普通运行模式中的至少一个。
基于上述提供的运行模式的相关内容,本申请还提供了步骤S32的第一种实施方式,在该实施方式中,当所述每一任务码包括至少一种运行模式时,S32具体可以为:根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间以及任务码执行指令。
为了便于理解和解释上述提供的S32的第一种实施方式,下面将详细介绍S32中每一执行动作。
步骤S32的第一种实施方式具体可以包括步骤S32A1-S32A2:
S32A1:根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间。
在本申请中,每一任务码在每一运行模式下对应的任务码存储空间的生成过程是相同且独立的,因而,下面将以每一任务码在系统运行模式下对应的任务码存储空间的生成过程为例进行说明。
作为示例,当每一任务码包括系统运行模式时,则S32A1具体可以为:根据每一任务码在系统运行模式下的各个指令,生成所述每一任务码在系统运行模式下对应的任务码存储空间。
另外,本申请还提供了步骤S32A1的另一种实施方式,在该实施方式中,S32A1具体包括步骤S32A11-S32A12:
S32A11:解析每一任务码在每一运行模式下的各个指令,获取每一任务码在每一运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值。
指令空间需求值是指在代码指令存储时所需要的存储空间值。
输入参数空间需求值是指输入参数存储时所需要的存储空间值。
初始化参数空间需求值是指初始化参数存储时所需要的存储空间值。
作为示例,当每一任务码包括系统运行模式时,则S32A11具体可以为:解析每一任务码在系统运行模式下的各个指令,获取每一任务码在系统运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值。
S32A12:根据每一任务码在每一运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值进行存储空间分配,获取每一任务码在每一运行模式下对应的指令存储子空间、输入参数存储子空间和初始化参数存储子空间。
在步骤S32A12中分配获得的每一任务码在每一运行模式下对应的指令存储子空间、输入参数存储子空间和初始化参数存储子空间,分别能够满足每一任务码在每一运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值。
作为示例,当每一任务码包括系统运行模式时,则S32A11具体可以为:根据每一任务码在系统运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值进行存储空间分配,获取每一任务码在系统运行模式下对应的指令存储子空间、输入参数存储子空间和初始化参数存储子空间。
以上为步骤S32A1的具体实施方式。
S32A2:根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码执行指令。
在本申请中,每一任务码在每一运行模式下对应的任务码执行指令的生成过程是相同且独立的,因而,下面将以每一任务码在系统运行模式下对应的任务码执行指令的生成过程为例进行说明。
作为示例,当每一任务码包括系统运行模式时,则S32A1具体可以为:根据每一任务码在系统运行模式下的各个指令,生成所述每一任务码在系统运行模式下对应的任务码执行指令。
另外,本申请还提供了步骤S32A2的另一种实施方式,在该实施方式中,S32A2具体为:遍历每一任务码在每一运行模式下的各个指令,生成每一任务码在每一运行模式下对应的任务码执行指令。
作为示例,当第一个任务码包括系统运行模式,且第一个任务码包括第1个指令至第M个指令时,则S32A1具体可以为:遍历第一个任务码在系统运行模式下的第1个指令,第一个任务码在系统运行模式下的第2个指令,……,第一个任务码在系统运行模式下的第M个指令,生成第一个任务码在系统运行模式下对应的任务码执行指令。
需要说明的是,本申请不限定步骤S32A1和步骤S32A2之间的执行顺序,可以依次执行步骤S32A1和步骤S32A2,也可以依次执行步骤S32A2和步骤S32A1,还可以同时执行步骤S32A1和步骤S32A2。
以上为步骤S32的第一种实施方式。
另外,为了能够自动地在不同任务之间进行切换,还可以将每一任务码在每一运行模式下对应的任务码存储空间链接到任务控制指令中,因此,本申请还提供了步骤S32的第二种实施方式,在该实施方式中,S32具体可以包括步骤S32B1-S32B3:
S32B1:根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间。
S32B2:将所述每一任务码在每一运行模式下对应的任务码存储空间链接到任务控制指令中。
任务控制指令用于控制执行每一待处理代码所包括的至少一个任务码对应的任务。作为示例,当一个待处理代码包括第1个任务码至第S个任务码;而且,第1个任务码对应第1任务,……,第S个任务码对应第S个任务;而且,第1个任务码在系统运行模式下对应的任务码存储空间的链接为第1个链接,……,第S个任务码在系统运行模式下对应的任务码存储空间的链接为第S个链接;而且,任务控制指令包括第1个链接至第S个链接时,则任务控制指令用于根据第1个链接、……、第S个链接,来分别控制执行第1个任务、……、第S个任务。
S32B3:根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码执行指令。
需要说明的是,在上述实施方式中,步骤S32B1可以采用上述提供的步骤S32的第一种实施方式中S32A1的任一实施方式进行实施,技术详情请参照步骤S32的第一种实施方式中S32A1;步骤S32B3可以采用上述提供的步骤S32的第一种实施方式中S32A2的任一实施方式进行实施,技术详情请参照步骤S32的第一种实施方式中S32A2。
以上为步骤S32的第二种实施方式。
需要说明的是,在步骤S32的第一种实施方式和第二种实施方式中,当获取了每一任务码在每一运行模式下对应的任务码执行指令之后,需要将该任务码执行指令存储至每一任务码在每一运行模式下对应的指令存储子空间内,以便后续能够从该指令存储子空间中读取该任务码执行指令。
以上为步骤S32的具体实施方式。
S33:将所述每一任务码对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码对应的执行码。
每一任务码对应的执行码中包括有操作数实际值,不包括任何的操作数,使得当PLC根据执行码进行代码执行时,PLC可以使用执行码中的操作数实际值进行执行,无需通过重新执行段定位以及数据地址解析的步骤来从存储空间中获取操作数实际值,因而,当PLC根据该执行码进行运行时,无需重新执行段定位以及数据地址解析的步骤,减少了可编程控制器运行代码时的执行步骤,从而提高了可编程控制器的执行效率。
需要说明的是,在本申请中,如果待处理代码为中间码,那么在步骤S33中可以获得该中间码中每一任务码对应的执行码,以便后续PLC能够利用解释器对该中间码中每一任务码对应的的执行码进行逐条解析运行;如果待处理代码为本地码码,那么在步骤S33中可以获得该本地码中每一任务码对应的执行码,以便后续PLC能够直接运行该本地码中每一任务码对应的执行码。
还需要说明的是,在本申请中,每一任务码对应的执行码的获取过程是相同且相互独立地,因而,为了便于理解和解释每一任务码对应的执行码的获取过程,下面将以一个任务码对应的执行码的获取过程为例进行说明。
作为示例,假设待处理代码包括第一个任务码,且第一个任务码对应的任务码执行指令中包括第1个操作参数至第Y个操作参数,则步骤S33具体可以为:将第一个任务码对应的任务码执行指令中包括第1个操作参数、……、第Y个操作参数,分别替换为第1个操作参数对应的操作数实际值、……、第Y个操作参数对应的操作数实际值,从而得到第一个任务码对应的执行码。
另外,由于每一任务码可以包括多种运行模式,因而,可以获取每一任务码在不同运行模式下的执行码。此时,本申请提供了步骤S33的第一种实施方式,在该实施方式中,当所述每一任务码包括至少一种运行模式时,S33具体可以为:将所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码在每一运行模式下对应的执行码。
另外,由于每一任务码在每一运行模式下对应的任务码执行指令中的操作数以及操作数对应的存储地址获取过程是相同且相互独立地,因而,为了便于理解和解释,下面将以一任务码在两种运行模式下对应的任务码执行指令中的操作数以及操作数对应的存储地址获取过程为例进行说明。
作为示例,当每一任务码包括系统运行模式和普通运行模式时,S33具体可以为:将所述每一任务码在系统运行模式下对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码在系统运行模式下对应的执行码;而且,将所述每一任务码在普通运行模式下对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码在普通运行模式下对应的执行码。
另外,由于操作数对应的操作数实际值存储在输入参数存储子空间或初始化参数存储子空间中,因而,可以根据每一操作数对应的操作数实际值的存储地址来获取每一操作数对应的操作数实际值。如此,基于步骤S33的第一种实施方式,本申请还提供了步骤S33的第二种实施方式,在该实施方式中,步骤S33具体包括步骤S331-S333:
S331:获取所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数以及该操作数对应的操作数实际值的存储地址。
操作数对应的操作数实际值的存储地址用于记录该操作数对应操作数实际值在存储空间中的存储地址;而且,操作数对应的操作数实际值与存储地址是一一对应的。
需要说明的是,在本申请中,可以在获取了一个操作数之后立即获取该操作数对应的操作数实际值的存储地址,也可以在获取了一个任务码执行指令中的所有操作数之后再获取每一操作数对应的操作数实际值的存储地址,本申请对此不做具体限定。
另外,在步骤S331中,可以通过解析每一任务码在每一运行模式下对应的任务码执行指令来获取操作数;而且,当该任务码执行指令包括至少一个执行指令时,可以通过分别解析每一执行指令来获取每一执行指令中的操作数。
作为示例,假设待处理代码包括第一个任务码,且第一个任务码在系统运行模式下包括第1个执行指令至第R个执行指令,则步骤S331具体可以为:解析第1个执行指令,获得第1个执行指令中的各个操作数;……;解析第R个执行指令,获得第R个执行指令中的各个操作数。
此外,在本申请中,可以根据每一操作数对应的操作数实际值的存储空间标识以及地址偏移值来确定该操作数对应的操作数实际值的存储地址,因而,本申请还提供了执行动作“获取每一任务码在每一运行模式下对应的任务码执行指令中所述操作数对应的操作数实际值的存储地址”的具体实施方式,该实施方式包括步骤S3311-S3312:
S3311:获取所述每一任务码在每一运行模式下对应的任务码执行指令中所述操作数对应的操作数实际值的参数存储空间标识和地址偏移值。
参数存储空间标识用于标识每一参数存储空间,且每一参数存储空间可以是输入参数存储子空间,也可以是初始化参数存储子空间。
地址偏移值是指一个存储地址在包括该存储地址的参数存储空间的偏移参考地址基础上产生的地址偏移量,且移参考地址可以是参数存储空间的起始地址、或终止地址,或其他偏移参考地址。作为示例,假设一个存储地址为100,且包括该存储地址的参数存储空间的偏移参考地址为99,且该存储地址在该参数存储空间的上产生的地址偏移量为1,则存储地址100的地址偏移值为1。
S3312:根据所述操作数对应的操作数实际值的参数存储空间标识和地址偏移值,生成所述操作数对应的操作数实际值的存储地址。
在步骤S3312中,先根据操作数对应的操作数实际值的参数存储空间标识,来确定该参数存储空间的偏移参考地址,然后,在根据该参数存储空间的偏移参考地址和该操作数对应的操作数实际值的地址偏移值,确定操作数对应的操作数实际值的存储地址。
作为示例,假设一个操作数对应的操作数实际值的参数存储空间标识为第一标识,第一标识对应偏移参考地址99,且该操作数对应的操作数实际值的地址偏移值为1,则该操作数对应的操作数实际值的存储地址为100。
以上为步骤S331的具体实施方式。
S332:根据所述操作数对应的存储地址,在所述输入参数存储子空间或初始化参数存储子空间中进行查询,得到所述操作数对应的操作数实际值。
S333:利用所述操作数对应的操作数实际值替换所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数,得到所述每一任务码对应的执行码。
以上为步骤S33的具体实施方式。
以上为本申请方法实施例一提供的代码生成方法的具体实施方式,在该实施方式中,在获取了包括至少一个任务码的待处理代码,且确定该待处理代码中包括预设标识之后,先根据每一任务码中的各个指令,生成每一任务码对应的任务码存储空间以及任务码执行指令,再将每一任务码对应的任务码执行指令中的操作数替换为该操作数对应的操作数实际值,得到每一任务码对应的执行码。此时,由于在每一任务对应的执行码中包括了可以直接使用的操作数实际值,不包括需要进行段定位和地址解析的操作数,因而,当可编程控制器根据该执行码进行运行时,无需重新执行段定位以及数据地址解析的步骤,减少了可编程控制器运行代码时的执行步骤,从而提高了可编程控制器的执行效率。
为了便于理解和解释上述方法实施例一提供的代码生成方法,下面将结合图7并以代码生成方法的一种具体实施方式为例进行说明。
方法实施例二
需要说明的是,方法实施例二提供的代码生成方法是方法实施例一提供的代码生成方法的一种具体实施方式,技术详情请参照方法实施例一。
参见图7,该图为本申请方法实施例二提供的代码生成方法的流程图。
本申请实施例提供的代码生成方法,包括步骤S71-S78:
S71:从上位机中下载或从PLC的存储空间中读取待处理代码;其中,待处理代码包括至少一个任务码,且待处理代码为中间码或本地码。
S72:获取当前任务码。
作为一种实施方式,S72具体可以为:从待处理代码中所有未被遍历的任务码中,按预设任务选取方法选择一个任务码,作为当前任务码。
预设任务选取方法可以预先设定,尤其可以根据应用场景设定。例如,预设任务选取方法可以是随机选取方法,也可以是按照特殊的选取顺序进行选取,还可以是其他的选取方法。
S73:获取当前任务码的当前运行模式。
作为一种实施方式,S73具体可以为:从当前任务码中所有未被遍历的运行模式中,按预设模式选取方法选择一个运行模式,作为当前任务码的当前运行模式。
预设模式选取方法可以预先设定,尤其可以根据应用场景设定。例如,预设模式选取方法可以是随机选取方法,也可以是按照特殊的选取顺序进行选取,还可以是其他的选取方法。
S74:判断当前任务码在当前运行模式下是否有预设标识;若是,则执行步骤S75;若否,则执行步骤S78。
预设标识的相关内容请参照上述方法实施例一的步骤S32中的“预设标识”的相关介绍,为了简要起见,在此不再赘述。
S75:分析当前任务码在当前运行模式下对应的存储空间需求值。
当前任务码在当前运行模式下对应的存储空间需求值可以包括当前任务码在当前运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值。
S76:获取当前任务码在当前运行模式下对应的任务码存储空间。
当前任务码在当前运行模式下对应的任务码存储空间可以包括指令存储子空间、输入参数存储子空间和初始化参数存储子空间。
S77:生成当前任务码在当前运行模式下对应的任务码执行指令以及执行码。
S78:判断是否遍历了当前任务码所包括的所有运行模式;若是,则执行步骤S79;若否,则返回执行步骤S73。
S79:判断是否遍历了所述待处理代码所包括的所有任务码;若是,则结束代码生成过程;若否,则返回执行步骤S72。
以上为方法实施例二提供的代码生成方法的具体实施方式,在该实施方式中,通过遍历待处理代码中所包括的每一任务码以及遍历每一任务码中所包括的每一运行模式,来生成待处理代码中每一任务码在每一运行模式下对应的执行码。此时,由于在每一任务在每一模式下对应的执行码中包括了可以直接使用的操作数实际值,不包括需要进行段定位和地址解析的操作数,因而,当可编程控制器根据该执行码进行运行时,无需重新执行段定位以及数据地址解析的步骤,减少了可编程控制器运行代码时的执行步骤,从而提高了可编程控制器的执行效率。
基于上述方法实施例一和方法实施例二提供的代码生成方法的任一实施方式,本申请实施例还提供了一种代码生成装置,下面结合附图进行解释和说明。
装置实施例
需要说明的是,本实施例提供了一种代码生成装置,其技术详情请参照上述方法实施例一或方法实施例二。
参见图8,该图为本申请装置实施例提供的代码生成装置的结构示意图。
本申请实施例提供的应用于可编程控制器的代码生成装置80,包括:
获取单元81,用于获取待处理代码;所述待处理代码包括至少一个任务码;
生成单元82,用于若确定所述待处理代码中包括预设标识,则根据每一任务码中的各个指令,生成所述每一任务码对应的任务码存储空间以及任务码执行指令;每一任务码存储空间包括指令存储子空间、输入参数存储子空间和初始化参数存储子空间;所述指令存储子空间用于存储所述任务码执行指令;所述输入参数存储子空间和初始化参数存储子空间均用于存储操作数实际值;
替换单元83,用于将所述每一任务码对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,作为所述每一任务码对应的执行码。
作为一种实施方式,为了进一步提高后续可编程控制器的执行效率,所述待处理代码为中间码或本地码;
和/或,所述操作数实际值为函数调用的指针或实际数据值。
作为一种实施方式,为了进一步提高后续可编程控制器的执行效率,当所述每一任务码包括至少一种运行模式时,所述生成单元82,具体用于:根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间以及任务码执行指令;
所述替换单元83,具体用于:将所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码在每一运行模式下对应的执行码。
作为一种实施方式,为了进一步提高后续可编程控制器的执行效率,所述生成单元82,具体包括:
第一获取子单元,用于解析每一任务码在每一运行模式下的各个指令,获取每一任务码在每一运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值;
第二获取子单元,用于根据每一任务码在每一运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值进行存储空间分配,获取每一任务码在每一运行模式下对应的指令存储子空间、输入参数存储子空间和初始化参数存储子空间。
作为一种实施方式,为了进一步提高后续可编程控制器的执行效率,所述生成单元82,具体包括:
第三获取子单元,用于遍历每一任务码在每一运行模式下的各个指令,生成每一任务码在每一运行模式下对应的任务码执行指令。
作为一种实施方式,为了进一步提高后续可编程控制器的执行效率,所述装置80还包括:
链接单元,用于将所述每一任务码在每一运行模式下对应的任务码存储空间链接到任务控制指令中。
作为一种实施方式,为了进一步提高后续可编程控制器的执行效率,所述替换单元83,具体包括:
第四获取子单元,用于获取所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数以及所述操作数对应的操作数实际值的存储地址;
第五获取子单元,用于根据所述操作数对应的操作数实际值的存储地址,在所述输入参数存储子空间或初始化参数存储子空间中进行查询,得到所述操作数对应的操作数实际值;
第六获取子单元,用于利用所述操作数对应的操作数实际值替换所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数,得到所述每一任务码在每一运行模式下对应的执行码。
作为一种实施方式,为了进一步提高后续可编程控制器的执行效率,所述第四获取子单元,具体包括:
第一获取模块,用于获取所述每一任务码在每一运行模式下对应的任务码执行指令中所述操作数对应的操作数实际值的参数存储空间标识和地址偏移值;
第二获取模块,用于根据所述操作数对应的操作数实际值的参数存储空间标识和地址偏移值,生成所述操作数对应的操作数实际值的存储地址。
作为一种实施方式,为了进一步提高后续可编程控制器的执行效率,所述每一任务码包括系统运行模式和普通运行模式中的至少一个。
以上为装置实施例提供的代码生成装置的具体实施方式,在该实施方式中,在获取了包括至少一个任务码的待处理代码,且确定该待处理代码中包括预设标识之后,先根据每一任务码中的各个指令,生成每一任务码对应的任务码存储空间以及任务码执行指令,再将每一任务码对应的任务码执行指令中的操作数替换为该操作数对应的操作数实际值,得到每一任务码对应的执行码。此时,由于在每一任务对应的执行码中包括了可以直接使用的操作数实际值,不包括需要进行段定位和地址解析的操作数,因而,当可编程控制器根据该执行码进行运行时,无需重新执行段定位以及数据地址解析的步骤,减少了可编程控制器运行代码时的执行步骤,从而提高了可编程控制器的执行效率。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (10)
1.一种代码生成方法,其特征在于,应用于可编程控制器,所述方法包括:
获取待处理代码;所述待处理代码包括至少一个任务码;
若确定所述待处理代码中包括预设标识,则根据每一任务码中的各个指令,生成所述每一任务码对应的任务码存储空间以及任务码执行指令;每一任务码存储空间包括指令存储子空间、输入参数存储子空间和初始化参数存储子空间;所述指令存储子空间用于存储所述任务码执行指令;所述输入参数存储子空间和初始化参数存储子空间均用于存储操作数实际值;
将所述每一任务码对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码对应的执行码。
2.根据权利要求1所述的方法,其特征在于,所述待处理代码为中间码或本地码;
和/或,所述操作数实际值为函数调用的指针或实际数据值。
3.根据权利要求1所述的方法,其特征在于,当所述每一任务码包括至少一种运行模式时,所述根据每一任务码中的各个指令,生成所述每一任务码对应的任务码存储空间以及任务码执行指令,具体包括:
根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间以及任务码执行指令;
所述将所述每一任务码对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码对应的执行码,具体包括:
将所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,得到所述每一任务码在每一运行模式下对应的执行码。
4.根据权利要求3所述的方法,其特征在于,所述根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间,具体包括:
解析每一任务码在每一运行模式下的各个指令,获取每一任务码在每一运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值;
根据每一任务码在每一运行模式下对应的指令空间需求值、输入参数空间需求值以及初始化参数空间需求值进行存储空间分配,获取每一任务码在每一运行模式下对应的指令存储子空间、输入参数存储子空间和初始化参数存储子空间。
5.根据权利要求3所述的方法,其特征在于,所述根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码执行指令,具体包括:
遍历每一任务码在每一运行模式下的各个指令,生成每一任务码在每一运行模式下对应的任务码执行指令。
6.根据权利要求3所述的方法,其特征在于,所述根据每一任务码在每一运行模式下的各个指令,生成所述每一任务码在每一运行模式下对应的任务码存储空间之后,还包括:
将所述每一任务码在每一运行模式下对应的任务码存储空间链接到任务控制指令中;其中,所述任务控制指令用于控制执行每一待处理代码中至少一个任务码对应的任务。
7.根据权利要求3所述的方法,其特征在于,所述将所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,具体包括:
获取所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数以及所述操作数对应的操作数实际值的存储地址;
根据所述操作数对应的操作数实际值的存储地址,在所述输入参数存储子空间或初始化参数存储子空间中进行查询,得到所述操作数对应的操作数实际值;
利用所述操作数对应的操作数实际值替换所述每一任务码在每一运行模式下对应的任务码执行指令中的操作数。
8.根据权利要求7所述的方法,其特征在于,所述获取所述每一任务码在每一运行模式下对应的任务码执行指令中所述操作数对应的操作数实际值的存储地址,具体包括:
获取所述每一任务码在每一运行模式下对应的任务码执行指令中所述操作数对应的操作数实际值的参数存储空间标识和地址偏移值;
根据所述操作数对应的操作数实际值的参数存储空间标识和地址偏移值,生成所述操作数对应的操作数实际值的存储地址。
9.根据权利要求3所述的方法,其特征在于,所述每一任务码包括系统运行模式和普通运行模式中的至少一个。
10.一种代码生成装置,其特征在于,应用于可编程控制器,所述装置包括:
获取单元,用于获取待处理代码;所述待处理代码包括至少一个任务码;
生成单元,用于若确定所述待处理代码中包括预设标识,则根据每一任务码中的各个指令,生成所述每一任务码对应的任务码存储空间以及任务码执行指令;每一任务码存储空间包括指令存储子空间、输入参数存储子空间和初始化参数存储子空间;所述指令存储子空间用于存储所述任务码执行指令;所述输入参数存储子空间和初始化参数存储子空间均用于存储操作数实际值;
替换单元,用于将所述每一任务码对应的任务码执行指令中的操作数替换为所述操作数对应的操作数实际值,作为所述每一任务码对应的执行码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910667806.9A CN110488738B (zh) | 2019-07-23 | 2019-07-23 | 一种代码生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910667806.9A CN110488738B (zh) | 2019-07-23 | 2019-07-23 | 一种代码生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110488738A CN110488738A (zh) | 2019-11-22 |
CN110488738B true CN110488738B (zh) | 2021-04-09 |
Family
ID=68547969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910667806.9A Active CN110488738B (zh) | 2019-07-23 | 2019-07-23 | 一种代码生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110488738B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102019131814A1 (de) * | 2019-11-25 | 2021-05-27 | Beckhoff Automation Gmbh | Verfahren zum Verknüpfen von Objekten eines Steuerprogramms einer Steuereinheit eines Automatisierungssystems und Entwicklungsumgebung |
DE102019134353A1 (de) * | 2019-12-13 | 2021-06-17 | Beckhoff Automation Gmbh | Verfahren zur Datenmigration eines Zeigerelements im Zuge einer Datenmigration eines Programmzustands eines Steuerprogramms eines Automatisierungssystems |
CN113721925B (zh) * | 2021-09-03 | 2024-05-03 | 上海壁仞科技股份有限公司 | 计算机可读取存储介质、内存指针的编译方法和装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3956131B2 (ja) * | 2002-12-26 | 2007-08-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム変換装置、プログラム変換方法及びプログラム |
US7272450B2 (en) * | 2004-03-31 | 2007-09-18 | Omron Corporation | Development aid device |
US7318143B2 (en) * | 2004-10-20 | 2008-01-08 | Arm Limited | Reuseable configuration data |
KR101407629B1 (ko) * | 2007-06-04 | 2014-06-13 | 더 보드 오브 리젠츠 오브 더 유니버시티 오브 텍사스 시스템 | 자바 변환 가속 장치 및 방법 |
CN100541433C (zh) * | 2007-09-13 | 2009-09-16 | 上海交通大学 | 基于用户描述的汇编器及其实现方法 |
JP4888534B2 (ja) * | 2009-07-27 | 2012-02-29 | オムロン株式会社 | プログラム開発支援装置および処理方法 |
CN103077011B (zh) * | 2012-10-09 | 2015-12-09 | 华为技术有限公司 | 一种在JavaScript脚本语言中预生成机器码指令的方法和装置 |
CN104267999B (zh) * | 2014-09-26 | 2018-09-18 | 浙江中控技术股份有限公司 | 一种对控制程序进行编译的方法和装置 |
CN107168698B (zh) * | 2017-04-24 | 2020-11-24 | 华南理工大学 | 图形化编程的自动编译方法 |
CN109947432B (zh) * | 2019-03-28 | 2022-06-10 | Oppo广东移动通信有限公司 | 汇编程序处理方法及相关装置 |
-
2019
- 2019-07-23 CN CN201910667806.9A patent/CN110488738B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110488738A (zh) | 2019-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110488738B (zh) | 一种代码生成方法及装置 | |
US8843885B2 (en) | Program creation support device | |
USRE33706E (en) | Table driven translator | |
CN109918081B (zh) | 一种编译方法及编译器 | |
CN110244936B (zh) | 用于支持visio流程图自动导入dcs算法组态软件的方法和装置 | |
CN101430662B (zh) | Java语言程序与虚拟机程序共同调试的方法 | |
US10295985B2 (en) | Program processing apparatus and program | |
Liu et al. | An intelligent NC program processor for CNC system of machine tool | |
CN107122216B (zh) | 一种嵌入式实时操作系统动态加载方法 | |
Lastra et al. | An IEC 61499 application generator for scan-based industrial controllers | |
EP3540536B1 (en) | Development support device, development support method, and development support program | |
CN112286144A (zh) | 一种组态方法及系统、计算机可读存储介质 | |
CN105204837B (zh) | 一种逻辑编程的实现方法和装置 | |
US20190012168A1 (en) | Program generating apparatus | |
CN107463421B (zh) | 一种静态流程模型的编译执行方法及系统 | |
US11137740B2 (en) | Numerical controller and method for determining look-ahead variable | |
CN110471659B (zh) | 多语言实现方法和系统、人机界面组态软件端和设备端 | |
JP4735854B2 (ja) | Plcのプログラム開発支援装置 | |
CN112446625A (zh) | 一种工艺线路生成系统、方法、平台及存储介质 | |
CN117170634A (zh) | 代码编译方法、装置、存储介质及电子设备 | |
CN114020278B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN109324838A (zh) | 单片机程序的执行方法、执行装置及终端 | |
EP0638862B1 (en) | Method and system for processing language | |
CN114564156A (zh) | 模型切片的方法和装置、3d打印系统、电子设备 | |
CN114237557A (zh) | 调试逻辑系统设计的方法、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |