Развертывание оптимизации компилятора gcc - PullRequest
4 голосов
/ 28 октября 2010

Мне интересно увидеть код, где gcc на самом деле оптимизировал код.Есть ли способ, которым я мог бы сделать?

Я прошел несколько других подобных квестов, я попробовал следующие вещи,

  1. -Wa, ahl = filename.lst: - этоОпция действительно хороша, вы можете просматривать код и соответствующий машинный код, но это нехорошо, когда я включаю опцию O3.
  2. Сброс оптимизированного дерева: - Я уверен, что gcc дает мне большое количество отладочной информации.Но я не знаю, как это расшифровать.Я буду рад, если кто-нибудь сможет указать на любую доступную информацию.

Есть ли какой-нибудь другой лучший способ узнать, какая часть кода оптимизирована для gcc?

Спасибо, Мадхур

Ответы [ 2 ]

8 голосов
/ 28 октября 2010

Вы можете скомпилировать код дважды, сначала с помощью:

$ 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 голосов
/ 28 октября 2010

Посмотрите на ассемблерный код или декомпилируйте ваше скомпилированное приложение.Декомпиляторы C создают некрасивый код C, но для анализа того, какой код был сгенерирован, этого должно хватить.

...