[問題] 請問gcc的 omit-frame-pointer的用意

看板ASM (組合語言)作者 (allstars)時間16年前 (2008/12/18 22:43), 編輯推噓1(107)
留言8則, 1人參與, 最新討論串1/2 (看更多)
man了一下 dont keep the frame pointer in a register for functions that dont need one 我要問 frame pointer是不是就是指ebp?? 還有frame pointer 跟stack pointer不是都會存在register裡嗎? 如果不在register那就是在memory裡嘍~ 這樣存取的速度不就變慢了? 而且在memory 是不是pointer就可以把他的value改掉了嗎? 什麼樣的function可以不需要frame pointer在register裡呢?? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.109.232

12/19 00:17, , 1F
他的意思應該是如果不需要用到fp就不要多此一舉去動它
12/19 00:17, 1F

12/19 00:18, , 2F
因為function如果需要動用到fp時必須先把原先的fp放到stack
12/19 00:18, 2F

12/19 00:19, , 3F
而且function return時還要再pop出來 會浪費掉很多時間
12/19 00:19, 3F

12/19 00:20, , 4F
某一些小function如果不需動用到很多local variable的話
12/19 00:20, 4F

12/19 00:22, , 5F
是可以不使用到fp的 因為local variables全部放在register裡
12/19 00:22, 5F

12/19 00:23, , 6F
fp的存在是為了方便fetch到存在stack中的local variables
12/19 00:23, 6F

12/19 00:24, , 7F
當你不需要利用stack來暫存一些intermediate value時
12/19 00:24, 7F

12/19 00:25, , 8F
去存取fp這個動作就是redundancy的instructions
12/19 00:25, 8F
文章代碼(AID): #19Ic5_hF (ASM)
文章代碼(AID): #19Ic5_hF (ASM)