1咪奖、參數(shù)拷貝(參數(shù)實例化)。
2酱床、保存當(dāng)前指令的下一條指令羊赵,并跳轉(zhuǎn)到被調(diào)函數(shù)。
這些操作均在main函數(shù)中進(jìn)行扇谣。
1昧捷、移動ebp、esp形成新的棧幀結(jié)構(gòu)罐寨。
2靡挥、壓棧(push)形成臨時變量并執(zhí)行相關(guān)操作。
3鸯绿、return一個值跋破。
這些操作在函數(shù)中進(jìn)行。
被調(diào)函數(shù)完成相關(guān)操作后需返回到原函數(shù)中執(zhí)行下一條指令瓶蝴,
1毒返、出棧(pop)。
2舷手、回復(fù)main函數(shù)的棧幀結(jié)構(gòu)拧簸。(pop )
3、返回main函數(shù)
這些操作也在函數(shù)中進(jìn)行男窟。
整個過程就三步:
1盆赤、根據(jù)調(diào)用的函數(shù)名找到函數(shù)入口;
2蝎宇、在棧中申請調(diào)用函數(shù)中的參數(shù)及函數(shù)體內(nèi)定義的變量的內(nèi)存空間
3弟劲、函數(shù)執(zhí)行完后,釋放函數(shù)在棧中的申請的參數(shù)和變量的空間姥芥,最后返回值(如果有的話)
函數(shù)調(diào)用過程和中斷處理過程一模一樣
總結(jié):每一個函數(shù)調(diào)用都會分配函數(shù)棧兔乞,在棧內(nèi)進(jìn)行函數(shù)執(zhí)行過程。調(diào)用前凉唐,先把返回地址壓棧庸追,然后把當(dāng)前函數(shù)的esp指針壓棧。