我希望能看到gcc实际优化了代码的部分。有没有办法可以做到这一点?
我已经查看了几个类似的问题,并尝试了以下几个方法:
- -Wa,ahl=filename.lst:这个选项非常好,可以浏览代码和相应的机器代码,但是在启用O3选项时效果不佳。
- 转储优化树:我确信gcc给了我足够的调试信息,但我不知道如何解读它们。如果有人能指出任何可用的信息,我将不胜感激。
除此之外,还有其他更好的方法来找出gcc优化的代码部分吗?
谢谢, Madhur
我希望能看到gcc实际优化了代码的部分。有没有办法可以做到这一点?
我已经查看了几个类似的问题,并尝试了以下几个方法:
除此之外,还有其他更好的方法来找出gcc优化的代码部分吗?
谢谢, Madhur
您可以将代码编译两次,首先使用以下命令:
$ 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")'
查看汇编代码或反编译已编译的应用程序。C反编译器会生成丑陋的C代码,但为了分析生成的代码,这已经足够了。