[发明专利]用于函数调用的方法和装置有效
申请号: | 201210500365.1 | 申请日: | 2012-11-29 |
公开(公告)号: | CN103853532B | 公开(公告)日: | 2017-09-29 |
发明(设计)人: | 官孝峰;郭久福;蒋健;朱鸿伟 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京市中咨律师事务所11247 | 代理人: | 周良玉,于静 |
地址: | 美国*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 函数 调用 方法 装置 | ||
1.一种用于函数调用的方法,包括:
在程序编译过程中准备多个备选代码模块,并将其插入在已编译程序中,所述多个备选代码模块用于执行所述函数调用,并且分别符合多个调用约定;
响应于检测到程序中的函数调用,获取所述多个备选代码模块;
获取被调用函数所采用的特定调用约定;
依据所获取到的所述特定调用约定,从所述多个备选代码模块中选择符合所述特定调用约定的代码模块来执行所述函数调用,
其中获取所述特定调用约定包括:查询所述程序运行时中所述被调用函数的加载信息以确定特定调用约定。
2.根据权利要求1的方法,其中获取多个备选代码模块包括,响应于被调用函数为外部函数库中的函数,获取所述多个备选代码模块。
3.根据权利要求1的方法,其中所述多个备选代码模块中的至少一个包括:前序部分,用于完成函数调用之前的准备工作;主体部分,用于执行函数调用;结尾部分,用于进行函数调用之后的清理工作。
4.根据权利要求1的方法,其中查询所述程序运行时中所述被调用函数的加载信息以确定特定调用约定包括:
向所述程序运行时发出查询请求,其中包含被调用函数的标识信息;
响应于查询请求,获取被调用函数的修饰名;
基于所述修饰名,确定与被调用函数对应的特定调用约定。
5.根据权利要求4的方法,其中获取被调用函数的修饰名包括:
基于所述被调用函数的标识信息进行名称解改编,获得原始函数名;
基于所述原始函数名获取被调用函数在函数库中的修饰名。
6.根据权利要求1的方法,其中获取所述特定调用约定还包括,记录所确定的特定调用约定,以便再次调用该被调用函数时直接获取上述特定调用约定。
7.根据权利要求6的方法,其中记录所确定的特定调用约定包括,记录所述特定调用约定对应的索引,并将第一地址修改为第二地址,所述第一地址指向用于查询所述加载信息的代码,所述第二地址指向所述多个代码模块中与上述特定调用约定的索引对应的代码模块。
8.一种用于函数调用的装置,包括:
代码模块插入单元,配置为,在程序编译过程中准备多个备选代码模块,并将其插入在已编译程序中,所述多个备选代码模块用于执行所述函数调用,并且分别符合多个调用约定;
代码模块获取单元,配置为,响应于检测到程序中的函数调用,获取所述多个备选代码模块;
调用约定获取单元,配置为获取被调用函数所采用的特定调用约定;
代码模块选择单元,配置为,依据所获取到的所述特定调用约定,从所述多个备选代码模块中选择符合所述特定调用约定的代码模块来执行所述函数调用,
其中所述调用约定获取单元包括调用约定确定子单元,配置为通过查询所述程序运行时中所述被调用函数的加载信息以确定特定调用约定。
9.根据权利要求8的装置,其中所述代码模块获取单元配置为,响应于被调用函数为外部函数库中的函数,获取所述多个备选代码模块。
10.根据权利要求8的装置,其中所述多个备选代码模块中的至少一个包括:前序部分,用于完成函数调用之前的准备工作;主体部分,用于执行函数调用;结尾部分,用于进行函数调用之后的清理工作。
11.根据权利要求8的装置,其中所述调用约定确定子单元配置为:
向所述程序运行时发出查询请求,其中包含被调用函数的标识信息;
响应于查询请求,获取被调用函数的修饰名;
基于所述修饰名,确定与被调用函数对应的特定调用约定。
12.根据权利要求11的装置,其中所述调用约定确定子单元配置为:
基于所述被调用函数的标识信息进行名称解改编,获得原始函数名;
基于所述原始函数名获取被调用函数在函数库中的修饰名。
13.根据权利要求10的装置,其中所述调用约定获取单元还包括记录子单元,配置为记录所确定的特定调用约定,以便再次调用该被调用函数时直接获取上述特定调用约定。
14.根据权利要求13的装置,其中所述记录子单元配置为,记录所述特定调用约定对应的索引,并将第一地址修改为第二地址,所述第一地址指向用于查询所述加载信息的代码,所述第二地址指向所述多个代码模块中与上述特定调用约定的索引对应的代码模块装置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210500365.1/1.html,转载请声明来源钻瓜专利网。