【技术实现步骤摘要】
基于RINSIM仿真平台的C语言编译方法及装置
[0001]本专利技术属于核电
,具体涉及一种基于RINSIM仿真平台的C语言编译方法及装置。
技术介绍
[0002]RINSIM仿真平台是面向核电站的一体化仿真平台,是用于核电站和核动力仿真系统开发的全寿期支撑平台。原RINSIM仿真平台的图形化建模工具生成的是FORTRAN代码,用到的仿真工程软件NAFET、REALP等也是FORTRAN代码,因此只针对FORTRAN代码实现了编译功能。
[0003]多态是c++语言的一种特性,允许方法重名,参数类型不同。随着DCS在核电厂中的应用,核电模拟机需要实现DCS仿真。DCS厂家的控制程序广泛使用c\c++语言开发。多态函数不可避免地被应用。然而,RINSIM仿真平台链接流程不支持链接多态函数,造成多态需求的函数不能被RINSIM仿真平台调用,导致RINSIM仿真平台无法实现DCS仿真效果。
技术实现思路
[0004]为克服相关技术中存在的问题,提供一种基于RINSIM仿真平台的C语言编译方法及装置。 ...
【技术保护点】
【技术特征摘要】
1.一种基于RINSIM仿真平台的C语言编译方法,其特征在于,所述方法包括:在检测到待编译的源程序包括变量时,根据该变量生成符合所述RINSIM仿真平台的编译规则的变量信息,并将该变量信息添加至变量数据库;在检测所述源程序包括符合所述编译规则的函数时,将该函数的函数信息添加至模块数据库;根据检测到的多个具有相同名称特征的多态子函数,生成符合所述编译规则的模糊多态函数,将该多个具有相同名称特征的多态子函数中的一个多态子函数替换为该模糊多态函数,并将该模块多态函数的函数信息添加至模块数据库,该模糊多态函数能够实现该多个具有相同名称特征的多态子函数的全部功能;对所述源程序进行编译预处理的过程中,针对所述源程序,根据所述变量数据库和所述模块数据库生成头文件,所述头文件定义了所述源程序中各变量符合所述编译规则的实际位置信息,忽略所述源程序中的多态子函数,并定义了函数符合所述编译规则的格式;根据所述头文件,对所述源程序进行编译,生成目标程序。2.根据权利要求1所述的方法,其特征在于,针对所述源程序,根据所述变量数据库和所述模块数据库生成头文件,包括:在检测到所述源程序中的语句包含全局变量区及变量的情况下,在该段语句前标注第一类标识;对所述源程序进行逐行扫描,若检测到所述源程序的语句包含第一类标识,则截取该语句对应的变量名,并根据所述变量数据库,确定该变量的变量信息;根据该变量的变量信息,确定该变量的实际位置信息;根据每个变量的实际位置信息,在头文件中定义每个变量的实际位置。3.根据权利要求2所述的方法,其特征在于,根据该变量的变量信息,确定该变量的实际位置信息,包括:在截取到的变量为数组变量的情况下,根据该变量的下标及起始位置,确定该变量的实际位置信息;在截取到的变量为复杂变量的情况下,根据该变量的字段偏移及父节点位置信息,确定该变量的实际位置信息。4.根据权利要求2所述的方法,其特征在于,根据每个变量的实际位置信息,在头文件中定义每个变量的实际位置,包括:根据每个变量的实际位置信息,生成内存列表和第一符号链表,所述内存列表包括所述源程序的各变量对应的实际位置信息,所述第一符号链表包括所述源程序的各变量名;遍历所述内存列表,在头文件中按C语言格式生成每个被引用内存的用extern char修饰的定义,并定义静态指针变量指向该被引用内存区;遍历所述第一符号链表,在检测到全局变量时,在头文件中生成用#define修饰的C语言宏定义,将该全局变量与该全局变量的实际位置信息绑定。5.根据权利要求1所述的方法,其特征在于,针对所述源程序,根据所述变量数据库和所述模块数据库生成头文件,还包括:在检测到所述源程序中的语句包含主函数的情况下,在该段语句前标注第二类标识,在检测到所述源程序中的语句包含多态函数的情况下,在该段语句前标注第三类标识;
对所述源程序进行逐行扫描,进行以下操作:若检测到所述源程序的语句包含第二类标识,则截取该语句的主函数名,在所述模块数据库中包含截取到的主函数名时,将该主函数名添加到第二符号链表中;若检测到所述源程序的语句包含第三类标识,则截取该语句的多态子函数名,在所述模块数据库中包含截取到的多态子函数名时,将该多态子函数名添加到第二符号链表和多态列表中;结束对所述源程序的逐行扫描,生成第二符号链表和多态列表,所述第二符号链表包括所述源程序的各函数,所述多态列表包括所述源程序的各多态子函数;遍历所述第二符号链表,在检测到子函数时,判断该子函数是否存在于所述多态列表,若该该子函数存在于所述多态列表中,则在头文件中定义忽略该子函数,若该子函数不存在于所述多态列表中,则在头文件的宏定义中将该子函数名修改为符合所述编译规则的格式。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述源程序的配置文件生成可执行程序名、引用内存列表、模块列表和调度列表,所述模块列表包括所述配置文件中的主调函数的信息和被主调函数调用的子调函数的信息,所述调度列表包括所述配置文件中主调函数和被主调函数调用的子调函数之间的调度关系;根据所述引用内存列表生成第一中间列表,根据所述模块列表生成第二中间列表,根据所述调度列表生成第三中间列表;根据所述配置文件、所述第一中间列...
【专利技术属性】
技术研发人员:侯雪燕,刘伟,张大志,景应刚,
申请(专利权)人:中核武汉核电运行技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。