Сборка слишком сложная


1

Это, вероятно, очень простой вопрос, пожалуйста, несите меня.

Я начинаю в реинжинирингу после этого PDF я нашел на сайте: https://beginners.re/
Я, однако, застрял на самом основных этапах.

Соответствующая часть из PDF: 1]

Когда я пытаюсь скомпилировать мой C++ код (который так же, как и в книге) с помощью следующей команды:

gcc main.cpp -S -O 

Это выход Я получаю:

2

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

0

Оба выхода показывают одинаковый эффективный код сборки. В обоих выходов, есть только одна команда:

ret 

Второй пример вывода является разновидностью ret причина, по которой указана в this answer on Stackoverflow.

более сложный вывод имеет несколько директивных ассемблерных инструкций. Эти директивы не являются инструкциями.

  0

Спасибо! Итак, если я правильно понимаю, ассемблерные директивы должны собирать, какие директивы препроцессора соответствуют C? Кроме того, существует ли способ генерации упрощенного выходного файла, аналогичного файлу в pdf (имена функций, оставшиеся, директивы удалены и т. Д.), Или автор предположительно вручную очистил коды самостоятельно? 09 дек. 172017-12-09 19:57:12

+1

Автор, вероятно, сам его очистил. Вы также можете использовать https://godbolt.org для быстрого просмотра разборки для заданного кода 09 дек. 172017-12-09 21:16:36