[英]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.