MyTetra Share
Делитесь знаниями!
Как увидеть результат трансляции в код ассемблера в GCC
Время создания: 09.12.2008 19:06
Текстовые метки: c, c++, gcc, ассемблер
Раздел: Компьютер - Программирование - Компилятор GCC
Запись: xintrea/mytetra_syncro/master/base/0000000340/text.html на raw.github.com

Ассемблер от компилятора


Результат трансляции в код ассемблера можно увидеть с помощью ключа -S. Пример:


gcc -S test.c


Но такой код хоть и является результатом трансляции исходного кода, но он плохочитаем.



Ассемблер от objdump


Гораздо лучший ассемблерный листинг можно получить с помощью программы objdump. Для этого ее надо натравить на сгенерированный объектник вот с такими опциями:


objdump -d -S a.out


В полученном листинге больше всего обычно интересует секция .text, которая начинается так:


Disassembly of section .text:


А внутри этой секции, для стартового cpp файла, будет ассемлерный листинг функции main:


00000000004007d7 <main>:

#include <iostream>

int main(int argc, char** argv)

{

4007d7: 55 push %rbp


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


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования