1
我最近研究了x86程序集,並且不明白爲什麼我們必須要做push ebp 當輸入新函數時。爲什麼在轉到下一個堆棧幀時存儲舊幀指針
從調查中,我可以看到ebp的需求是因爲它可以輕鬆訪問函數調用的參數和這個新被調用者中的局部變量。
但我不知道爲什麼我們必須存儲舊的幀指針時,去新的堆棧幀?
這是因爲這樣做會使堆棧跟蹤更易於調試嗎?
以下是我的測試代碼:
foobar:
.LFB0:
.cfi_startproc
push ebp #Why do this here??
....
....
mov ebp, esp
在此先感謝