[英]Is it possible to optimize a compiled binary?
這更像是一種好奇心,但我想知道是否有可能在編譯后應用編譯器優化。 大多數優化技術是否高度依賴於IR,或者組裝是否可以相當容易地來回轉換?
最近有一些研究興趣在這個領域。 Alex Aiken的STOKE項目正在以一些非常令人印象深刻的結果完成這項工作。 在一個示例中,他們的優化器在OpenSSL的RSA庫中發現了一個比gcc -O3
快兩倍的函數,用於Montgomery Multiplication步驟。 它將這些優化應用於已編譯的ELF二進制文件。
一些編譯器后端有一個窺視孔優化器,基本上就是這樣,在它提交代表IR的程序集之前,它有一點優化的機會。
基本上你會想要做同樣的事情,從二進制,機器代碼到機器代碼。 不是相同的工具,而是相同類型的過程,檢查一些大小的代碼塊並進行優化。
現在你最終會遇到的問題是,例如你可能有一些在C中被標記為volatile的變量,因此它們在二進制文件中的效率非常低,優化器不會知道程序員在那里想要的並且可能最終優化它。
你當然可以把它帶回IR並再次前進,沒有什么可以阻止你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.