在函數調用前,會進行下面的操做:函數
1. 將調用的參數,從右往左push進stack中;指針
2. 將調用函數中被調函數的下一條指令做爲返回地址push進stack中;htm
3. 保存棧底指針,即push ebp,將保存棧底寄存器中的值push進stack;blog
4. 將棧底指針更新爲棧頂指針,即mov ebp, esp,就是講被調函數的棧底指針移向調用函數的棧頂位置;內存
5. 棧是從高地址向低地址延伸的,個人理解是,每次的棧分配大小是有限的,從高地址日後放,直接標記內存不可被佔用。get