2010-10-28 96 views
4

我有興趣看到gcc實際優化代碼的代碼。我有辦法做到嗎?展開gcc編譯器優化

我已經通過其他一些類似的questoins走了,我已經嘗試了以下幾件事情,

  1. -Wa,AHL = filename.lst: - 這個選項是非常好的,你可以瀏覽代碼和相應的機器代碼,但啓用O3選項時效果不佳。
  2. 轉儲優化樹: - 我相信gcc給了我很多調試信息。但我不知道如何解讀它。如果有人能指出任何可用的信息,我會很高興。

有沒有其他更好的辦法,找出gcc優化的代碼部分?

感謝, Madhur

+0

你試過gcc -O3 -S myFile1.c?輸出文件將是優化的彙編文件myFile1.s。要查看優化,最好閱讀彙編代碼。 – Kizaru 2010-10-28 11:10:02

回答

0

看那裝配臺代碼或反編譯你的編譯的應用程序。 C反編譯器生成醜陋的C代碼,但爲了分析生成哪些代碼,它已足夠。

8

您可以編譯代碼兩次,第一次有:

$ gcc -O0 -S -o yourfile_o0.s 

然後用:

$ gcc -O3 -S -o yourfile_o3.s 

然後你可以diff兩個結果集文件:

$ diff -u yourfile_o0.s yourfile_o3.s 
$ vim -d yourfile_o0.s yourfile_o3.s 
$ emacs --eval '(ediff "yourfile_o0.s" "yourfile_o3.s")' 
+0

+1,這是最容易和最準確的方式。 – DarkDust 2010-10-28 11:13:30

+0

+1,這是我在我更多好奇的時刻做過的事情:-) – 2010-10-28 11:17:36

+0

你會介意把每個命令放在不同的路線上嗎?我認爲閱讀會更好。 :) – 2010-10-28 11:37:34