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

看板ASM (組合語言)作者 (小虎)時間16年前 (2008/12/19 08:30), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《allstarschh (allstars)》之銘言: : 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裡呢?? : 感謝 正常 function push ebp mov ebp, esp mov eax, [ebp+08h] ; param mov esp, ebp ; leave pop ebp ; ret 那 omit-frame-pointer mov eax, [esp+04h] ; param ret 就這樣子而已 但是呢這不是萬能的 遇到SSE運算 還是得用正常的 不然做不出 stack alignment 16 的東西 再來就是opcode長度 esp會比ebp多一個bytes 另外就是存取速度問題 因為esp時常變動 會比ebp固定來的效率差一點 這通常只是為了多一個register的作法 IA32大家都知道register通用的才6個 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.9.49 ※ 編輯: wowtiger 來自: 125.225.9.49 (12/19 08:34)

12/19 23:21, , 1F
推一下 原來是這個意思
12/19 23:21, 1F

03/28 15:10, , 2F
感謝強者回答
03/28 15:10, 2F
文章代碼(AID): #19IkiblF (ASM)
文章代碼(AID): #19IkiblF (ASM)