函数调用方法及装置制造方法及图纸

技术编号:36086250 阅读:15 留言:0更新日期:2022-12-24 11:01
本申请公开一种函数调用方法及装置,涉及计算机技术领域。本申请的方法包括:获取目标应用程序对应的目标可执行二进制代码;执行目标可执行二进制代码;当需要调用目标函数时,执行目标序言指令,以实现根据待开辟栈空间大小参数开辟目标栈空间,并根据多个目标寄存器对应的预设顺序依次将每个目标寄存器内保存的内容存储至目标栈空间中;调用目标函数;在目标函数调用结束后,执行目标尾声指令,以实现根据多个目标寄存器对应的预设顺序和待开辟栈空间大小参数将目标栈空间中存储的每个目标寄存器对应的内容恢复至每个目标寄存器内,并将栈指针恢复至目标位置,其中,目标位置为调用目标函数前,栈指针所在的位置。栈指针所在的位置。栈指针所在的位置。

【技术实现步骤摘要】
函数调用方法及装置


[0001]本申请涉及计算机
,尤其涉及一种函数调用方法及装置。

技术介绍

[0002]在CPU运行应用程序对应的可执行二进制代码的过程中,当需要调用某个函数时,先执行该函数对应的多条函数序言指令,以实现开辟一个栈空间,并将要保护的多个寄存器中保存的内容存储至栈空间中;再调用该函数;在该函数调用结束后,执行该函数对应的多条函数尾声指令,以实现将栈空间中存储的每个寄存器对应的内容恢复至每个寄存器中,从而保证该函数的正常调用和该应用程序的正常运行。
[0003]由于,应用程序在运行过程中需要频繁调用函数,因此,CPU在执行应用程序对应的可执行二进制代码的过程中,需要执行大量的函数序言指令和函数尾声指令,然而,执行大量的函数序言指令和函数尾声指令会导致CPU调用函数的效率较低,从而会降低CPU运行应用程序的性能。

技术实现思路

[0004]本申请实施例提供一种函数调用方法及装置,主要目的在于提高CPU调用函数的效率,从而提高CPU运行应用程序的性能。
[0005]为解决上述技术问题,本申请实施例提供如下技术方案:
[0006]第一方面,本申请提供了一种函数调用方法,所述方法应用于CPU,所述方法包括:
[0007]获取目标应用程序对应的目标可执行二进制代码,其中,所述目标可执行二进制代码中包含目标函数、所述目标函数对应的目标序言指令和目标尾声指令,所述目标序言指令和所述目标尾声指令中均包含待开辟栈空间大小参数;
[0008]执行所述目标可执行二进制代码;
[0009]当需要调用所述目标函数时,执行所述目标序言指令,以实现根据所述待开辟栈空间大小参数开辟目标栈空间,并根据多个目标寄存器对应的预设顺序依次将每个所述目标寄存器内保存的内容存储至所述目标栈空间中;
[0010]调用所述目标函数;
[0011]在所述目标函数调用结束后,执行所述目标尾声指令,以实现根据多个所述目标寄存器对应的预设顺序和所述待开辟栈空间大小参数将所述目标栈空间中存储的每个所述目标寄存器对应的内容恢复至每个所述目标寄存器内,并将栈指针恢复至目标位置,其中,所述目标位置为调用所述目标函数前,所述栈指针所在的位置。
[0012]可选的,在所述获取目标应用程序对应的目标可执行二进制代码之前,所述方法还包括:
[0013]运行编译器;
[0014]将所述目标应用程序对应的源代码输入至所述编译器中,以便所述编译器将所述目标应用程序对应的源代码编译为可执行二进制代码,并在根据预设算法、每个所述目标
寄存器对应的容量大小和所述目标函数包含的每个局部变量对应的数据量大小计算待开辟栈空间大小后,根据所述待开辟栈空间大小生成所述目标序言指令和所述目标尾声指令,以及将所述目标序言指令和所述目标尾声指令添加至所述可执行二进制代码中,以获得所述目标可执行二进制代码。
[0015]可选的,所述执行所述目标序言指令,包括:
[0016]将所述目标序言指令输入至译码模块中,以便所述译码模块对所述目标序言指令进行译码处理,以获得所述目标序言指令对应的译码结果;
[0017]根据所述目标序言指令对应的译码结果控制第一专用电路执行所述目标序言指令对应的操作。
[0018]可选的,所述执行所述目标尾声指令,包括:
[0019]将所述目标尾声指令输入至译码模块中,以便所述译码模块对所述目标尾声指令进行译码处理,以获得所述目标尾声指令对应的译码结果;
[0020]根据所述目标尾声指令对应的译码结果控制第二专用电路执行所述目标尾声指令对应的操作。
[0021]第二方面,本申请还提供一种函数调用装置,所述装置应用于CPU,所述装置包括:
[0022]获取单元,用于获取目标应用程序对应的目标可执行二进制代码,其中,所述目标可执行二进制代码中包含目标函数、所述目标函数对应的目标序言指令和目标尾声指令,所述目标序言指令和所述目标尾声指令中均包含待开辟栈空间大小参数;
[0023]第一执行单元,用于执行所述目标可执行二进制代码;
[0024]第二执行单元,用于当需要调用所述目标函数时,执行所述目标序言指令,以实现根据所述待开辟栈空间大小参数开辟目标栈空间,并根据多个目标寄存器对应的预设顺序依次将每个所述目标寄存器内保存的内容存储至所述目标栈空间中;
[0025]调用单元,用于调用所述目标函数;
[0026]第三执行单元,用于在所述目标函数调用结束后,执行所述目标尾声指令,以实现根据多个所述目标寄存器对应的预设顺序和所述待开辟栈空间大小参数将所述目标栈空间中存储的每个所述目标寄存器对应的内容恢复至每个所述目标寄存器内,并将栈指针恢复至目标位置,其中,所述目标位置为调用所述目标函数前,所述栈指针所在的位置。
[0027]可选的,所述装置还包括:
[0028]运行单元,用于在所述获取单元获取目标应用程序对应的目标可执行二进制代码之前,运行编译器;
[0029]输入单元,用于将所述目标应用程序对应的源代码输入至所述编译器中,以便所述编译器将所述目标应用程序对应的源代码编译为可执行二进制代码,并在根据预设算法、每个所述目标寄存器对应的容量大小和所述目标函数包含的每个局部变量对应的数据量大小计算待开辟栈空间大小后,根据所述待开辟栈空间大小生成所述目标序言指令和所述目标尾声指令,以及将所述目标序言指令和所述目标尾声指令添加至所述可执行二进制代码中,以获得所述目标可执行二进制代码。
[0030]可选的,所述第二执行单元,具体用于将所述目标序言指令输入至译码模块中,以便所述译码模块对所述目标序言指令进行译码处理,以获得所述目标序言指令对应的译码结果,并根据所述目标序言指令对应的译码结果控制第一专用电路执行所述目标序言指令
对应的操作。
[0031]可选的,所述第三执行单元,具体用于将所述目标尾声指令输入至译码模块中,以便所述译码模块对所述目标尾声指令进行译码处理,以获得所述目标尾声指令对应的译码结果,并根据所述目标尾声指令对应的译码结果控制第二专用电路执行所述目标尾声指令对应的操作。
[0032]第三方面,本申请的实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行第一方面所述的函数调用方法。
[0033]第四方面,本申请的实施例提供了一种函数调用装置,所述装置包括存储介质;及一个或者多个处理器,所述存储介质与所述处理器耦合,所述处理器被配置为执行所述存储介质中存储的程序指令;所述程序指令运行时执行第一方面所述的函数调用方法。
[0034]借由上述技术方案,本申请提供的技术方案至少具有下列优点:
[0035]本申请提供一种函数调用方法及装置,在本申请中,CPU执行目标函数对应的目标序言指令和目标尾声指令,便可保证CPU能够正常调用目标函数及保证CPU能够正常运行目标应用程序,因此,可以有效提高CPU本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种函数调用方法,其特征在于,所述方法应用于CPU,所述方法包括:获取目标应用程序对应的目标可执行二进制代码,其中,所述目标可执行二进制代码中包含目标函数、所述目标函数对应的目标序言指令和目标尾声指令,所述目标序言指令和所述目标尾声指令中均包含待开辟栈空间大小参数;执行所述目标可执行二进制代码;当需要调用所述目标函数时,执行所述目标序言指令,以实现根据所述待开辟栈空间大小参数开辟目标栈空间,并根据多个目标寄存器对应的预设顺序依次将每个所述目标寄存器内保存的内容存储至所述目标栈空间中;调用所述目标函数;在所述目标函数调用结束后,执行所述目标尾声指令,以实现根据多个所述目标寄存器对应的预设顺序和所述待开辟栈空间大小参数将所述目标栈空间中存储的每个所述目标寄存器对应的内容恢复至每个所述目标寄存器内,并将栈指针恢复至目标位置,其中,所述目标位置为调用所述目标函数前,所述栈指针所在的位置。2.根据权利要求1所述的方法,其特征在于,在所述获取目标应用程序对应的目标可执行二进制代码之前,所述方法还包括:运行编译器;将所述目标应用程序对应的源代码输入至所述编译器中,以便所述编译器将所述目标应用程序对应的源代码编译为可执行二进制代码,并在根据预设算法、每个所述目标寄存器对应的容量大小和所述目标函数包含的每个局部变量对应的数据量大小计算待开辟栈空间大小后,根据所述待开辟栈空间大小生成所述目标序言指令和所述目标尾声指令,以及将所述目标序言指令和所述目标尾声指令添加至所述可执行二进制代码中,以获得所述目标可执行二进制代码。3.根据权利要求1所述的方法,其特征在于,所述执行所述目标序言指令,包括:将所述目标序言指令输入至译码模块中,以便所述译码模块对所述目标序言指令进行译码处理,以获得所述目标序言指令对应的译码结果;根据所述目标序言指令对应的译码结果控制第一专用电路执行所述目标序言指令对应的操作。4.根据权利要求1所述的方法,其特征在于,所述执行所述目标尾声指令,包括:将所述目标尾声指令输入至译码模块中,以便所述译码模块对所述目标尾声指令进行译码处理,以获得所述目标尾声指令对应的译码结果;根据所述目标尾声指令对应的译码结果控制第二专用电路执行所述目标尾声指令对应的操作。5.一种函数调用装置,其特征在于,所述装置应用于CPU,所述装置包括:获取单元,用于获取目标应用程序对应的目标可执行二进制代码,其中,所述目标可执行二进制代码中包含目标函数、所述目标函数对应的目标序言指令和目标尾声指令,所述目标序言指令和所述目标尾声指令中...

【专利技术属性】
技术研发人员:杜超高斐王峰
申请(专利权)人:北京奕斯伟计算技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1