Ассемблерный листинг программы на С++

В ряде случаев бывает полезно увидеть ассемблерный листинг программы на С++. Имеются онлайн средства чтобы сделать задачу, но мы рассмотрим также и другие возможности.

Ассемблерный листинг с помощью GCC

В компиляторе GCC ассемблерный листинг можно сгенерировать с помощью опции компиляторы -S. В этом случае следующая команда создаст файл main.s содержащий ассемблерный код.


gcc -S main.cpp

Ассемблерный листинг с помощью QT Creator

Если код содержит не только С++ но и Qt, предыдущий способ выдаст ошибку. Также желательно получить в ассемблерном листинге и вставки кода на С++. Частично эти задачи решаются следующим образом:
- Компилируется проект из Qt Creator в режиме Отладка
- В каталоге debug, где лежит наш исполняемый файл выполняем команду, где вместо a.exe пишем название нашего исполняемого файла. Получаем файл asm.lst с ассемблерным кодом и вставками на C++.


objdump -S a.exe >> asm.lst

Способ второй. В файл .pro проекта Qt Creator вставляем следующую строчку и в выходной папке /build-… появятся файлы листинга с расширениями .s


QMAKE_CXXFLAGS += -save-temps

Ассемблерный листинг с помощью godbolt.org

Имеется замечательный сайт godbolt.org, позволяющий увидеть ассемблерный листинг для множества языков программирования и различных компиляторов и их версий, в общем - must have.

2023-10-23



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

Ассемблерный листинг С++
Бенчмарки в С++
Рисование в консоли windows на С++
Функции в С++
Параметры функции в С++
Глоссарий С++. Идентификаторы, квалификаторы, модификаторы, объявление, определение и т.д..
Исключения в С++. Выбрасывание и ловля исключения.
Достоинства и недостатки C++
Сборка приложения без IDE C++ с помощью MinGW и Qt
Перегрузка функций и операторов в С++
Случайные числа в С++. Полиномиальная генерация случайных чисел.
Ссылки в С++
Рекурсия в С++. Примеры рекурсивных программ и без использования.
Шаблоны C++
Наименование переменных и стиль программирования
Версия компилятора С++
Время выполнения программы C++