> 什麼是棧幀
> 棧幀詳解
一、什麼是棧幀
定義: 棧幀也叫過程活動記錄,是編譯器用來實現過程/函數調用的一種數據結構。
每一次函數調用都是一個過程,這個過程要爲函數開闢空間、分配地址,用於本次函數的調用中臨時變量的保存和傳遞。這塊空間我們就稱爲函數棧幀。
二、棧幀詳解
以一個簡單代碼爲例:
轉到反彙編:
1.main函數的棧幀分配前:
__tmainCRTStartup是調用main函數之前需要調用的
edp存放了指向函數棧幀棧底的地址
esp存放了指向函數棧幀棧頂的地址
2.main函數的棧幀分配
3.Add函數的調用過程
彙編代碼:
棧幀創建過程:
4.函數結束過程:
出棧時會銷燬所創建的臨時空間。