棧幀

C語言中,每個棧幀對應著一個未運行完的函式。棧幀中保存了該函式的返回地址和局部變數。

概論

棧幀也叫過程活動記錄,是編譯器用來實現過程/函式調用的一種數據結構。

C語言

從邏輯上講,棧幀就是一個函式執行的環境:函式參數、函式的局部變數、函式執行完後返回到哪裡等等。

實現上有硬體方式和軟體方式(有些體系不支持硬體棧)

首先應該明白,棧是從高地址向低地址延伸的。每個函式的每次調用,都有它自己獨立的一個棧幀,這個棧幀中維持著所需要的各種信息。暫存器ebp指向當前的棧幀的底部(高地址),暫存器esp指向當前的棧幀的頂部(低地址)。

注意:EBP指向當前位於系統棧最上邊一個棧幀的底部,而不是系統棧的底部。嚴格說來,“棧幀底部”和“棧底”是不同的概念;ESP所指的棧幀頂部和系統棧的頂部是同一個位置。

相關詞條

熱門詞條

聯絡我們