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