Как я могу увидеть ассемблерный код, сгенерированный компилятором gcc (любого вида) для программы на C / C ++? - PullRequest
37 голосов
/ 31 августа 2009

Я пытаюсь оптимизировать множество умножений и арифметику указателей и хотел бы посмотреть, что делает компилятор, когда я устанавливаю флаги оптимизации.

- Edit -

Как ограничить его определенной функцией или блоком кода?

- Edit_2 -

Как позволить gcc генерировать менее подробный ассемблерный код?

Ответы [ 4 ]

39 голосов
/ 31 августа 2009

Добавьте -S в вашу командную строку.

Редактировать: не забывайте, что он поместит сборку в файлы, которые вы указали в -o switch.

9 голосов
/ 31 августа 2009

Как ограничить его определенной функцией или блоком кода?

Поместите эту функцию в отдельный исходный файл (и используйте другой параметр командной строки для этого одного исходного файла).

5 голосов
/ 08 августа 2012

Вы также можете запустить эту программу в отладчике, например gdb, и использовать представление дизассемблирования. В gdb вы можете использовать команду disass/m для просмотра сборки, смешанной с кодом C в текущем местоположении.

1 голос
/ 14 октября 2009

Вы можете остановить свою программу на точке останова в отладчике Visual Studio, выполнить «показ сборки» и даже выполнить по одной инструкции за раз.

...