我讀Professional Assembly Language通過Richard Blum,當你輸入一個電話你應該ESP
寄存器的值複製到EBP
,他還提供了下面的模板:爲什麼要在呼叫中保持EBP中的ESP?
function_label:
pushl %ebp
movl %esp, %ebp
< normal function code goes here>
movl %ebp, %esp
popl %ebp
ret
我不明白爲什麼這個是必要的。當你在功能內部推動某個東西時,你顯然打算將其彈回來,從而將ESP
恢復爲原始值。
那麼,爲什麼這個模板?
無論如何,EBP
註冊的用途是什麼?
我明顯錯過了一些東西,但它是什麼?
這被稱爲堆棧框架,它可以用於創建從函數完成後被破壞的局部變量。 – 2013-04-07 13:22:07
@Sp。爲什麼我不彈出這些局部變量? /爲什麼彈出不會摧毀它們?對不起,有點慢。 – MasterMastic 2013-04-07 13:23:30
也許你需要看看這個答案,更好地解釋,http://stackoverflow.com/questions/3699283/what-is-stack-frame-in-assembly#answer-3700219 – 2013-04-07 13:27:32