vc 提供了一种叫做naked函数的声明。naked意思为赤裸的意思,需要程序员管理堆栈,退出时需要显示调用ret,以及平衡堆栈。
当然带来的好处是免去了编译器默认为我们做的那些不必要的工作(很多费代码)。
以下是一个简单的naked函数的例子
naked 函数默认为__cdecl调用,需要调用者平衡堆栈(如果使用call调用时)。
在调用sum函数后,需要将esp加上8(两个dword的长度)。
另外注意的是,调用C函数是,不能直接使用call printf,而需要使用 call dword ptr[printf]
本文详细介绍了裸函数的概念及其在C/C++中的应用,包括如何通过裸函数免去编译器默认的工作,以及如何在函数调用中正确地平衡堆栈。通过一个简单的例子,展示了裸函数如何在函数内直接进行堆栈操作,从而实现更高效且灵活的代码编写。
1067

被折叠的 条评论
为什么被折叠?



