[发明专利]基于寄存器传输语言确定静态函数调用关系的方法有效

专利信息
申请号: 201410016117.9 申请日: 2014-01-14
公开(公告)号: CN103744678B 公开(公告)日: 2017-05-03
发明(设计)人: 向勇;汤卫东;杜香燕;孙卫真;马东超;杨彦卿;陆慧梅 申请(专利权)人: 清华大学
主分类号: G06F9/44 分类号: G06F9/44
代理公司: 北京中伟智信专利商标代理事务所11325 代理人: 张岱
地址: 100084*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开一种基于寄存器传输语言确定静态函数调用关系的方法,主要为了提供一种能够清楚的描述软件系统中函数、文件、模块间的函数调用关系。本发明所述方法包括将源代码编译过程中生成的编译中间结果,以寄存器传输文件的形式进行转存,基于所述编译中间结果得到函数调用关系文件;依据所述函数调用关系文件,以函数、文件或者模块为节点,以他们之间函数调用的次数为边,生成函数间、文件间或模块间的函数调用图来描述所述函数调用关系;和依据所述函数调用关系文件,生成函数调用关系列表来描述所述函数调用关系。
搜索关键词: 基于 寄存器 传输 语言 确定 静态 函数 调用 关系 方法
【主权项】:
一种基于寄存器传输语言确定静态函数调用关系的方法,其特征在于,所述方法包括:将源程序文件编译过程中产生的中间表示文件以寄存器传输语言的文件格式作为中间结果进行输出、转存;对所述中间结果进行分析,得到各级目录的内部和外部调用函数关系文件;基于所述各级目录的内部和外部调用函数关系文件,生成以函数、文件、模块为节点,以所述的函数、文件、各级目录之间的函数调用的次数为边的函数调用关系图来描述静态函数调用关系;和/或基于所述各级目录的内部和外部调用函数关系文件,生成函数、文件、各级目录之间的函数调用关系列表来描述静态函数调用关系;所述函数调用关系图的生成方法具体包括步骤:S1将第n级目录下的源程序文件W编译过程中得到中间表示文件以寄存器传输语言的文件格式作为中间结果进行输出、转存,其中所述中间结果包括所述源程序文件W的函数定义文件Z1和函数调用信息文件Z2;S2对所述源程序文件W的函数定义文件Z1和函数调用信息文件Z2进行分析,将所述源程序文件W中带有指定标示的函数名写入同一文件,生成所述源程序文件W的定义函数名列表文件W1;将所述函数调用信息文件Z2中的被调用函数的函数名写入同一文件,形成所述源程序文件W的被调用函数名列表文件W2;S3将所述定义函数名列表文件W1中的函数名和所述被调用函数名列表文件W2中的函数名进行匹配,若函数名相匹配,则生成文件W的内部函数调用关系文件W3;若函数名不匹配,则将所述被调用函数列表文件W2中的函数名和所述函数名对应的所述定义函数名列表文件W1中的函数名写入同一文件,生成源程序文件W的外部函数调用关系文件W4,并将不匹配的被调用函数的函数名写入同一文件,生成源程序文件W的未定义函数名列表文件W5;S4对第n级目录下的每个源程序文件重复上述步骤S1至S3,得到每个源程序文件的定义函数名列表文件,未定义函数名列表文件、内部调用函数关系文件和外部函数关系调用文件;S5将第n级目录下所有的定义函数名列表文件中的函数名写入同一文件中,形成n级目录的定义函数名列表文件n1;将n级目录下所有的未定义函数名列表文件中的函数名写入同一文件,形成第n级目录的未定义函数名列表文件n2;S6将所述定义函数名列表文件n1中的函数名和所述未定义函数名列表文件n2中的函数名进行匹配,若函数名相匹配,则生成第n级目录的内部函数调用关系文件n3;若函数名不匹配,则将所述未定义函数名列表文件n2中的函数名和所述未定义函数名列表文件n2中的函数名对应的所述定义函数名列表文件n1中的函数名写入同一文件,生成第n级目录的的外部函数调用关系文件n4,并将不匹配的被调用函数名写入同一文件,生成第n级目录的未定义函数名列表文件n5;重复步骤S1‑S6直至根目录,将根目录下的未定义函数名列表文件的函数名和根目录下的定义函数名列表文件中的函数名进行匹配,并生成根目录下的内部调用函数文件;基于上述各级目录的内部函数调用和外部函数调用关系文件,生成以函数、文件、各级目录为节点,以他们之间的调用次数为边的函数调用关系图;所述函数调用关系列表的生成包括步骤:a1将第n级目录下的源程序文件编译过程中得到中间表示文件以寄存器传输语言的文件格式作为中间结果进行输出、转存,其中所述中间结果包括所述源程序文件的函数定义文件和函数调用信息文件;a2对第n级目录下的源程序文件A的函数定义文件和函数调用文件进行分析,得到源程序文件A的内部函数调用列表文件,以及生成源程序文件A的未定义的被调用函数列表文件;a3在第n级目录下,查找是否存在源程序文件B,所述源程序文件B的定义函数的定义路径和所述源程序文件A的未定义的被调用函数列表的定义路径a相同,若存在,则生成源程序文件A对源程序文件B的调用列表,相应函数调用次数增加1,判断第n级目录下的函数调用信息文件中是否包含函数定义路径a,若已定义,则不作处理;若没有定义,则将被调用函数相关信息增加到第n级目录下的函数调用信息文件中;若不存在,则在第n级目录的上层目录第n‑1级目录下查找是否存源程序文件的定义路径与所述源程序文件A内未定义的被调用函数定义路径a相同,若查找到,则生成相应的调用关系列表,相应的函数调用次数增加1;若查找不到,则在第n‑2级目录下查找,逐级向上层目录查找直至生成相应的函数调用关系列表文件。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201410016117.9/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top