我被要求在使用c函数时在汇编中创建一个小程序。在这样做的时候,我想知道一些具体的事情。
我知道,当使用汇编时,无论我想在哪里调用c函数,我都必须将它的参数推送到堆栈中,并且在函数返回之后,我必须弹出那些参数(或者将4×x添加到esp,其中x表示被推送的参数数)。
我的问题是:
特别是在调用c函数exit时,我必须首先推送状态参数。假设我想按0来表示我的程序工作正常。
知道exit函数不返回,我必须使用它,不能仅仅调用退出系统自己中断,在这种情况下,我怎么能从堆栈中弹出0?exit函数是否为我执行此操作?

最佳答案

你不必。由于exit()不返回并且程序终止,系统将释放您使用的所有内存,包括堆栈。
但请注意,编译器将生成一个add esp, 4来清理堆栈,因为编译器不知道exit将永远不会返回。

关于c - 当我从汇编中调用C函数“退出”时,是否需要清理堆栈?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43831622/

10-11 02:31
查看更多