簡體   English   中英

是否可以優化編譯的二進制文件?

[英]Is it possible to optimize a compiled binary?

這更像是一種好奇心,但我想知道是否有可能在編譯后應用編譯器優化。 大多數優化技術是否高度依賴於IR,或者組裝是否可以相當容易地來回轉換?

雖然我不知道有很多標准工具可以做到這一點,但已經完成了。

本文描述了 Compaq Alpha處理器的優化器,它在鏈接已經完成之后工作,並且在編寫它時遇到了一些挑戰。

如果稍微過分定義,可以使用配置文件引導優化來檢測二進制文件,然后根據其關於緩存未命中,頁面錯誤等的可觀察行為重寫它。

在動態轉換方面也有一些工作,你可以在解釋器中運行現有的二進制文件,並使用標准的動態編譯技術來加快速度。 這是一篇詳述這篇文章的論文

希望這可以幫助!

最近有一些研究興趣在這個領域。 Alex Aiken的STOKE項目正在以一些非常令人印象深刻的結果完成這項工作。 在一個示例中,他們的優化器在OpenSSL的RSA庫中發現了一個比gcc -O3快兩倍的函數,用於Montgomery Multiplication步驟。 它將這些優化應用於已編譯的ELF二進制文件。

這是該論文的鏈接。

一些編譯器后端有一個窺視孔優化器,基本上就是這樣,在它提交代表IR的程序集之前,它有一點優化的機會。

基本上你會想要做同樣的事情,從二進制,機器代碼到機器代碼。 不是相同的工具,而是相同類型的過程,檢查一些大小的代碼塊並進行優化。

現在你最終會遇到的問題是,例如你可能有一些在C中被標記為volatile的變量,因此它們在二進制文件中的效率非常低,優化器不會知道程序員在那里想要的並且可能最終優化它。

你當然可以把它帶回IR並再次前進,沒有什么可以阻止你。

暫無
暫無

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

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