4

我被要求在使用 C 函数时在汇编中创建一个小程序。这样做的时候,我想知道一些具体的事情。

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

我的问题是:特别是 在调用 C 函数exit时,我必须首先为状态推送一个参数。假设我想按 0 表示我的程序可以正常工作。

知道exit函数不会返回并且我必须使用它并且不能自己调用​​退出系统中断,在这种情况下,我怎么能从堆栈中弹出那个 0?该功能是否exit为我执行该功能?

4

1 回答 1

1

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

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

于 2017-05-07T12:51:17.407 回答