概論
棧幀也叫過程活動記錄,是編譯器用來實現過程/函式調用的一種數據結構。
C語言
從邏輯上講,棧幀就是一個函式執行的環境:函式參數、函式的局部變數、函式執行完後返回到哪裡等等。
實現上有硬體方式和軟體方式(有些體系不支持硬體棧)
首先應該明白,棧是從高地址向低地址延伸的。每個函式的每次調用,都有它自己獨立的一個棧幀,這個棧幀中維持著所需要的各種信息。暫存器ebp指向當前的棧幀的底部(高地址),暫存器esp指向當前的棧幀的頂部(低地址)。
注意:EBP指向當前位於系統棧最上邊一個棧幀的底部,而不是系統棧的底部。嚴格說來,“棧幀底部”和“棧底”是不同的概念;ESP所指的棧幀頂部和系統棧的頂部是同一個位置。