繁体   English   中英

当我从汇编中调用C函数“退出”时,是否需要清理堆栈?

[英]Do I have to clean the stack when I call the C function “exit” from assembly?

我被要求在使用C函数时在汇编中创建一个小程序。 这样做的时候,我在想一些特定的东西。

我知道在使用汇编时,无论何时我想调用C函数,都必须将其参数推入堆栈,并且在函数返回后,我必须弹出这些参数(或将4× x添加到esp ,其中x代表数字推送的参数)。

我的问题是:特别是在调用C函数exit时,我必须首先为状态推送一个参数。 假设我想按0表示我的程序正常运行而没有错误。

知道exit函数不会返回并且我必须使用它并且不能自己调用​​退出系统中断,在这种情况下,我如何才能从堆栈中弹出那个0? exit功能对我有帮助吗?

不用了 由于exit()不返回并且程序终止,因此系统将释放您使用的所有内存,包括堆栈。

请注意,尽管编译器将生成一个add esp, 4来清理堆栈,因为编译器不知道exit将永远不会返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM