2012-02-10 50 views

回答

6

從英特爾優化參考手冊中,分支預測單元包含一個返回堆棧緩衝器精確預測ret指令(節2.2.2.1)更準確。指令隊列和解碼單元還跟蹤堆棧指針的變化,以提高解碼帶寬(第2.2.2.5節)。

更詳細地說,第3.4.1.4節描述了一些「規則」,主要針對編譯器編寫者,從內聯中受益,調用&返回 - 最相關的可能是近/遠呼叫必須與近/ far return,這意味着不推薦在堆棧上推送返回地址並跳轉到被調用者。此外,建議調用深度不超過16個嵌套調用(RSB的大小)。

如果這些規則得到遵守,可以有效地把他們當作分支選擇(第3.4.1.6)在間接分支,與意味着一切。你很可能永遠不會遇到一個ret一檔,除了在病理情況下或自行修改代碼。

+0

哇我不知道這是在優化手工記錄!非常感謝您的詳細解答! – Mehrdad 2012-02-10 21:07:22