展开gcc编译器优化

4

我希望能看到gcc实际优化了代码的部分。有没有办法可以做到这一点?

我已经查看了几个类似的问题,并尝试了以下几个方法:

  1. -Wa,ahl=filename.lst:这个选项非常好,可以浏览代码和相应的机器代码,但是在启用O3选项时效果不佳。
  2. 转储优化树:我确信gcc给了我足够的调试信息,但我不知道如何解读它们。如果有人能指出任何可用的信息,我将不胜感激。

除此之外,还有其他更好的方法来找出gcc优化的代码部分吗?

谢谢, Madhur


你尝试过使用gcc -O3 -S myFile1.c吗?输出文件将是经过优化的汇编文件myFile1.s。要查看优化效果,最好阅读汇编代码。 - Kizaru
2个回答

9

您可以将代码编译两次,首先使用以下命令:

$ 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")'

+1,这是我在过去更加好奇的时刻所做的方式 :-) - Chris J
您介意将每个命令放在不同的行吗?我认为这样更易于阅读。 :) - Denilson Sá Maia

0

查看汇编代码或反编译已编译的应用程序。C反编译器会生成丑陋的C代码,但为了分析生成的代码,这已经足够了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接