[发明专利]一种基于cfg文件的类型转换的处理方法及其应用有效
申请号: | 201410660551.0 | 申请日: | 2014-11-18 |
公开(公告)号: | CN104317969B | 公开(公告)日: | 2017-06-16 |
发明(设计)人: | 顾乃杰;杜云开;任开新;黄双玲 | 申请(专利权)人: | 合肥康捷信息科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 安徽省合肥新安专利代理有限责任公司34101 | 代理人: | 何梅生 |
地址: | 230000 安徽省合肥市望江西路和创新大*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 cfg 文件 类型 转换 处理 方法 及其 应用 | ||
技术领域
本发明属于软件可靠性领域,具体地说是一种基于C++编译中间cfg文件的仿真过程中类型转换时变量类型和内存对象的记录方法。
背景技术
cfg文件是C++程序在编译过程中生成的中间文件,其中以函数为单位记录了程序格式化后的全部信息。cfg文件中语句与C++源程序中语句是多对一的关系,一条C++语句可能会分成多条cfg语句。由于C++语句出于精简性的考虑,显式及隐式类型转换并不是通过统一的方式来编写的,因此在处理类型转换时对于格式的分析,内存的记录尤为困难。
目前的函数调用分析工具还不能支持虚函数调用,其本质原因在于不能跟踪并记录类型转换。
发明内容
本发明为现有技术存在的不足之处,提出一种基于cfg文件的类型转换的处理方法及其应用,以期能在仿真程序执行的过程中,使用较少的额外空间,实现虚函数调用功能。
本发明为解决技术问题采用如下技术方案:
本发明一种基于cfg文件的类型转换的处理方法,所述cfg文件中包含类型树;其特点是对所述cfg文件中的代码进行逐条处理,所述逐条处理包括提取满足所定义的类型转换模式的语句并分别进行存储并按如下步骤进行:
步骤1、定义类型转换模式和存储结构;
所述类型转换模式分为变量间接类型转换模式、直接类型转换模式、取地址间接类型转换模式和动态类型转换模式;
定义所述变量间接类型转换模式为:TYPE*var;
TYPE2*var2=var;
TYPE和TYPE2分别表示不同的类型关键字,var和var2分别表示不同的变量;
定义所述直接类型转换模式为:TYPE*var=new TYPE2;
new为C++语言的关键字,表示创建对象;
定义所述取地址间接类型转换模式为:TYPE var;
TYPE2*var2=&var;
定义所述动态类型转换模式为:TYPE*var=dynamic_cast<TYPE*>(var2);
dynamic_cast为C++语言的关键字,表示动态类型转换;
定义所述存储结构是由定义类型varType、原始类型realType和原始对象top组成的结构体;
所述不同的变量var和var2均对应有各自的结构体;
步骤2、提取所述cfg文件中满足所述类型转换模式的语句,并分别按照如下类型进行存储:
类型一、对于所述变量间接类型转换模式和所述取地址间接类型转换模式:
步骤1.1、将所述类型关键字TYPE存入变量var的定义类型varType中;
步骤1.2、将所述类型关键字TYPE存入变量var的原始类型realType中;
步骤1.3、随机产生地址并存入变量var的原始对象top中;
步骤1.4、将所述类型关键字TYPE2存入变量var2的定义类型varType中;
步骤1.5、将所述类型关键字TYPE存入变量var2的原始类型realType中;
步骤1.6、将所述变量var的原始对象top存入所述变量var2的原始对象top中;
类型二、对于所述直接类型转换模式:
步骤1.1、将所述类型关键字TYPE存入变量var的定义类型varType中;
步骤1.2、将所述类型关键字TYPE2存入变量var的原始类型realType;
步骤1.3、随机产生地址并存入变量var的原始对象top中;
类型三、对于所述动态类型转换模式:
步骤1.1、将所述类型关键字TYPE存入变量var的定义类型varType中;
步骤1.2、将所述类型关键字TYPE存入变量var的原始类型realType;
步骤1.3、从所述变量var2的原始类型realType开始向下搜索所述类型树,判断所述类型树中是否存在所述类型关键字为TYPE的类型,若存在,则将所述变量var2的原始对象top存入所述变量var的原始对象top中;否则,将0存入所述变量var的原始对象top中。
本发明所述的基于cfg文件的类型转换的处理方法的应用的特点是:用于虚函数重载中根据所述变量的结构体获得真实函数。
与现有技术相比,本发明的有益效果在于:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥康捷信息科技有限公司,未经合肥康捷信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410660551.0/2.html,转载请声明来源钻瓜专利网。