函數(shù)調(diào)用過程
esp指向堆棧頂端,ebp指向old ebp,返回地址為ebp-4,參數(shù)為ebp-8,ebp-12。。。
Paste_Image.png
調(diào)用:
將調(diào)用參數(shù)壓棧
將下一條指令地址壓棧,作為返回地址
將ebp壓棧,將ebp設(shè)置為esp
跳轉(zhuǎn)到函數(shù)執(zhí)行
返回:
esp 設(shè)置為 ebp,回收局部變量
pop ebp:恢復(fù)ebp的值為old ebp
從棧中獲得返回地址,并跳轉(zhuǎn)到該位置
不同的出棧方和參數(shù)傳遞順序決定不同的調(diào)用慣例
Paste_Image.png