簡體   English   中英

GCC如何決定輸出匯編函數的順序?

[英]How does GCC decide what order to output assembly functions in?

通過程序集GCC為我的項目中的C文件生成,我注意到函數不會按照它們在源文件中出現的順序在匯編中輸出。 這次重新排序的目標是什么?GCC使用什么啟發法來決定訂單? (它只是保存函數的數據結構的工件嗎?)這不是-freorder-functions ,因為我沒有使用-fprofile-arcs

過程間優化階段的后期部分使用調用圖的自下而上遍歷; 那是你看到的順序。 有一個關於GCC的這部分原設計的紙張這里 (來自前一陣子,這個東西第一次出現在GCC 3.4)。

您可以使用-fno-toplevel-reorder (或者對於較新版本的GCC -fno-unit-at-a-time使用-fno-unit-at-a-time for -fno-unit-at-a-time來阻止重新排序,但這會禁用某些相關的優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM