簡體   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