[发明专利]一种函数调用方法及装置有效
申请号: | 201710698756.1 | 申请日: | 2017-08-15 |
公开(公告)号: | CN107291480B | 公开(公告)日: | 2020-12-15 |
发明(设计)人: | 朱浩;张虎;曹新平 | 申请(专利权)人: | 中国农业银行股份有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F9/448 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王雪;王宝筠 |
地址: | 100005 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 函数 调用 方法 装置 | ||
1.一种函数调用方法,其特征在于,所述方法包括:
将待调用函数的源文件编译成二进制文件,所述二进制文件中包括数据段、代码段和文件头,所述文件头用于存储所述数据段和所述代码段的位置信息;
将已获取的二进制文件中提取的所述数据段、所述代码段和所述文件头加载入内存中,并记录内存地址;
利用程序指针寄存器建立虚拟栈,并为所述虚拟栈分配内存;
将所述待调用函数的参数,以二进制码流的形式写入所述虚拟栈,以便在所述待调用函数运行时从所述虚拟栈中调用所述参数;
通过调用预设通用函数接口,利用所述虚拟栈,并依据所述内存地址,对所述待调用函数进行调用;
所述函数调用方法,其特征在于,所述待调用函数为多个时,所述方法还包括:
将各个待调用函数的二进制文件中的数据段进行拼装,得到拼装后数据段;
将各个待调用函数的二进制文件中的代码段进行拼装,得到拼装后代码段;
获取拼装后文件,所述拼装后文件中包括所述拼装后数据段、所述拼装后代码段和文件头,所述文件头存储有所述拼装后数据段和所述拼装后代码段的位置信息;
相应的,所述将所述数据段、所述代码段和所述文件头加载入内存中,并记录内存地址,包括:
将所述拼装后数据段、所述拼装后代码段和所述文件头加载入内存,并记录内存地址。
2.根据权利要求1所述的函数调用方法,其特征在于,所述为所述虚拟栈分配内存,包括:
利用系统内存分配函数,为所述虚拟栈动态分配内存;
或,
通过静态链接库或动态连接库占据内存,为所述虚拟栈静态分配内存。
3.根据权利要求1-2中任一项所述的函数调用方法,其特征在于,所述方法应用于函数测试程序中。
4.根据权利要求3所述的函数调用方法,其特征在于,所述通过调用预设通用函数接口,利用所述虚拟栈,并依据所述内存地址,对所述待调用函数进行调用之前,还包括:
内嵌汇编指令或注入二进制指令码,所述汇编指令和所述二进制指令码均用于指示先将所述程序指针寄存器的值保存在所述虚拟栈的首地址中,再将所述程序指针寄存器的值修改为所述虚拟栈的首地址+4。
5.根据对权利要求3所述的函数调用方法,其特征在于,所述通过调用预设通用函数接口,利用所述虚拟栈,并依据所述内存地址,对所述待调用函数进行调用之后,还包括:
当所述待调用函数测试结束后,返回地址寄存器,保存下一条指令的内存地址,从所述虚拟栈的首地址中读取所述程序指针寄存器的值,并顺序从所述程序指针寄存器中恢复现场。
6.一种函数调用装置,其特征在于,所述装置包括:
编译模块,用于将待调用函数的源文件编译成二进制文件,所述二进制文件中包括数据段、代码段和文件头,所述文件头用于存储所述数据段和所述代码段的位置信息;
加载模块,用于将已获取的二进制文件中提取的所述数据段、所述代码段和所述文件头加载入内存中,并记录内存地址;
建立模块,用于利用程序指针寄存器建立虚拟栈,并为所述虚拟栈分配内存;
写入模块,用于将所述待调用函数的参数,以二进制码流的形式写入所述虚拟栈,以便在所述待调用函数运行时从所述虚拟栈中调用所述参数;
调用模块,用于通过调用预设通用函数接口,利用所述虚拟栈,并依据所述内存地址,对所述待调用函数进行调用;
所述函数调用装置,其特征在于,所述待调用函数为多个时,所述装置还包括:
第一拼装模块,用于将各个待调用函数的二进制文件中的数据段进行拼装,得到拼装后数据段;
第二拼装模块,用于将各个待调用函数的二进制文件中的代码段进行拼装,得到拼装后代码段;
获取模块,用于获取拼装后文件,所述拼装后文件中包括所述拼装后数据段、所述拼装后代码段和文件头,所述文件头存储有所述拼装后数据段和所述拼装后代码段的位置信息;
相应的,所述加载模块,具体用于将所述拼装后数据段、所述拼装后代码段和所述文件头加载入内存,并记录内存地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国农业银行股份有限公司,未经中国农业银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710698756.1/1.html,转载请声明来源钻瓜专利网。