我怎么知道何时清理堆栈

时间:2014-05-04 22:10:55

标签: assembly

我在C& C ++看起来像:

__declspec(dllexport) bool CreateSocket(SSLSocket* ssl_info);

我认为默认情况下应该使用cdecl调用约定。

如果在程序集中我导入模块并执行:

push sockinfo
call [CreateSocket]

我是否必须:add esp, 0x04恢复堆栈?或者是否自动恢复,因为它是导入的功能?我问这个是因为printfcdecl约定并导入,我必须自己清理堆栈。对于WINAPI我不必这样做。

我是否必须为导出/所有功能执行此操作,或仅为我自己编写的功能执行此操作?

1 个答案:

答案 0 :(得分:1)

无论函数是导入还是集成在调用模块中,清理职责都是相同的。它本身就是召唤大会决定谁应该进行清理。

相关问题