我在C& C ++看起来像:
__declspec(dllexport) bool CreateSocket(SSLSocket* ssl_info);
我认为默认情况下应该使用cdecl
调用约定。
如果在程序集中我导入模块并执行:
push sockinfo
call [CreateSocket]
我是否必须:add esp, 0x04
恢复堆栈?或者是否自动恢复,因为它是导入的功能?我问这个是因为printf
是cdecl
约定并导入,我必须自己清理堆栈。对于WINAPI
我不必这样做。
我是否必须为导出/所有功能执行此操作,或仅为我自己编写的功能执行此操作?
答案 0 :(得分:1)
无论函数是导入还是集成在调用模块中,清理职责都是相同的。它本身就是召唤大会决定谁应该进行清理。