[发明专利]函数调用方法及装置在审
申请号: | 202211213521.6 | 申请日: | 2022-09-30 |
公开(公告)号: | CN115509645A | 公开(公告)日: | 2022-12-23 |
发明(设计)人: | 杜超;高斐;王峰 | 申请(专利权)人: | 北京奕斯伟计算技术股份有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F8/41 |
代理公司: | 北京鼎佳达知识产权代理事务所(普通合伙) 11348 | 代理人: | 刘铁鸣;刘铁生 |
地址: | 100176 北京市大兴区北京经*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 函数 调用 方法 装置 | ||
1.一种函数调用方法,其特征在于,所述方法应用于CPU,所述方法包括:
获取目标应用程序对应的目标可执行二进制代码,其中,所述目标可执行二进制代码中包含目标函数、所述目标函数对应的目标序言指令和目标尾声指令,所述目标序言指令和所述目标尾声指令中均包含待开辟栈空间大小参数;
执行所述目标可执行二进制代码;
当需要调用所述目标函数时,执行所述目标序言指令,以实现根据所述待开辟栈空间大小参数开辟目标栈空间,并根据多个目标寄存器对应的预设顺序依次将每个所述目标寄存器内保存的内容存储至所述目标栈空间中;
调用所述目标函数;
在所述目标函数调用结束后,执行所述目标尾声指令,以实现根据多个所述目标寄存器对应的预设顺序和所述待开辟栈空间大小参数将所述目标栈空间中存储的每个所述目标寄存器对应的内容恢复至每个所述目标寄存器内,并将栈指针恢复至目标位置,其中,所述目标位置为调用所述目标函数前,所述栈指针所在的位置。
2.根据权利要求1所述的方法,其特征在于,在所述获取目标应用程序对应的目标可执行二进制代码之前,所述方法还包括:
运行编译器;
将所述目标应用程序对应的源代码输入至所述编译器中,以便所述编译器将所述目标应用程序对应的源代码编译为可执行二进制代码,并在根据预设算法、每个所述目标寄存器对应的容量大小和所述目标函数包含的每个局部变量对应的数据量大小计算待开辟栈空间大小后,根据所述待开辟栈空间大小生成所述目标序言指令和所述目标尾声指令,以及将所述目标序言指令和所述目标尾声指令添加至所述可执行二进制代码中,以获得所述目标可执行二进制代码。
3.根据权利要求1所述的方法,其特征在于,所述执行所述目标序言指令,包括:
将所述目标序言指令输入至译码模块中,以便所述译码模块对所述目标序言指令进行译码处理,以获得所述目标序言指令对应的译码结果;
根据所述目标序言指令对应的译码结果控制第一专用电路执行所述目标序言指令对应的操作。
4.根据权利要求1所述的方法,其特征在于,所述执行所述目标尾声指令,包括:
将所述目标尾声指令输入至译码模块中,以便所述译码模块对所述目标尾声指令进行译码处理,以获得所述目标尾声指令对应的译码结果;
根据所述目标尾声指令对应的译码结果控制第二专用电路执行所述目标尾声指令对应的操作。
5.一种函数调用装置,其特征在于,所述装置应用于CPU,所述装置包括:
获取单元,用于获取目标应用程序对应的目标可执行二进制代码,其中,所述目标可执行二进制代码中包含目标函数、所述目标函数对应的目标序言指令和目标尾声指令,所述目标序言指令和所述目标尾声指令中均包含待开辟栈空间大小参数;
第一执行单元,用于执行所述目标可执行二进制代码;
第二执行单元,用于当需要调用所述目标函数时,执行所述目标序言指令,以实现根据所述待开辟栈空间大小参数开辟目标栈空间,并根据多个目标寄存器对应的预设顺序依次将每个所述目标寄存器内保存的内容存储至所述目标栈空间中;
调用单元,用于调用所述目标函数;
第三执行单元,用于在所述目标函数调用结束后,执行所述目标尾声指令,以实现根据多个所述目标寄存器对应的预设顺序和所述待开辟栈空间大小参数将所述目标栈空间中存储的每个所述目标寄存器对应的内容恢复至每个所述目标寄存器内,并将栈指针恢复至目标位置,其中,所述目标位置为调用所述目标函数前,所述栈指针所在的位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奕斯伟计算技术股份有限公司,未经北京奕斯伟计算技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211213521.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:齐平式车窗总成及装配公差的控制方法
- 下一篇:便于回收电解液的锂电池拆解装置