2010-10-28 8 views
4

Je suis intéressé de voir le code où gcc a réellement optimisé le code. Y a-t-il un moyen de le faire?Déroulement de l'optimisation du compilateur gcc

Je suis passé par quelques autres questoins semblables, j'ai essayé quelques petites choses suivantes,

  1. -Wa, AHL = filename.lst: - cette option est vraiment bon, vous pouvez parcourir le code et la machine correspondante code, mais ce n'est pas bon quand j'active l'option O3.
  2. Arbre de vidage optimisé: - Je suis sûr que gcc me donne une bonne quantité d'informations de débogage. Mais je ne sais pas comment le déchiffrer. Je serais heureux si quelqu'un pouvait pointer vers n'importe quelle information disponible.

Y a-t-il une autre meilleure façon de savoir quelle partie du code gcc est optimisée?

Merci, Madhur

+0

Avez-vous essayé gcc -O3 -S monFichier1.c? Le fichier de sortie sera le fichier d'assemblage optimisé myFile1.s. Pour voir les optimisations, il est préférable de lire le code d'assemblage. – Kizaru

Répondre

0

Regardez le code Assember ou décompiler votre application compilée. C décompilateurs produisent un code C laid, mais pour analyser quel code a été généré, il doit suffire.

8

Vous pouvez compiler le code deux fois, d'abord avec:

$ gcc -O0 -S -o yourfile_o0.s 

Puis, avec:

$ gcc -O3 -S -o yourfile_o3.s 

Ensuite, vous pouvez diff les deux fichiers d'assemblage résultant:

$ 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, c'est la façon de le faire le plus facilement et le plus précisément. – DarkDust

+0

+1, C'est ce que j'ai fait dans le passé pendant mes moments les plus curieux :-) –

+0

Pourriez-vous mettre chaque commande sur une ligne différente? Je pense que ce sera mieux pour la lecture. :) –

Questions connexes