函數(shù)調(diào)用棧

函數(shù)調(diào)用過程

esp指向堆棧頂端,ebp指向old ebp,返回地址為ebp-4,參數(shù)為ebp-8,ebp-12。。。

Paste_Image.png

調(diào)用:

  1. 將調(diào)用參數(shù)壓棧

  2. 將下一條指令地址壓棧,作為返回地址

  3. 將ebp壓棧,將ebp設(shè)置為esp

  4. 跳轉(zhuǎn)到函數(shù)執(zhí)行

返回:

  1. esp 設(shè)置為 ebp,回收局部變量

  2. pop ebp:恢復(fù)ebp的值為old ebp

  3. 從棧中獲得返回地址,并跳轉(zhuǎn)到該位置

不同的出棧方和參數(shù)傳遞順序決定不同的調(diào)用慣例

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容