Подтвердить что ты не робот

Скомпилирован ли код С++ для ассемблерных кодов?

Скомпилирован ли код С++ для кода сборки? Если у нас есть код на С++, мы сможем получить код сборки?

4b9b3361

Ответ 1

Подавляющее большинство компиляторов С++ преобразует исходный код С++ в объектные файлы (машинный код с достаточной информацией управления, которая должна быть связана с исполняемым файлом). Например, вы должны фактически отказаться от своего пути, чтобы получить gcc для генерации кода сборки (asm source) с помощью флага -s. Обычно вы никогда не увидите сборку.

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

Фактически, самые ранние С++-компиляторы действительно генерировали исходный код C, а затем скомпилировали это.

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

Ответ 2

Ваш код должен быть понят машиной, и, поскольку он не интерпретируется и не запускается в виртуальной машине, он сначала преобразуется в сборку. Вы можете получить этот код сборки, используя флаг -S в ваших параметрах компиляции g++ (если вы используете g++, конечно).

g++ -S -o file.s file.cpp

должен сделать трюк.

Ответ 3

Это зависит от компилятора. Нет никаких реальных правил, с которыми компилируется С++, за исключением того, что в какой-то момент он должен работать на компьютере. Большинство компиляторов имеет переключатель для компиляции в сборку.

С помощью gcc вы можете добавить -S для компиляции в файл .asm.

Для визуальной студии см. http://codegem.org/2008/10/generate-assembly-from-c-code-in-visual-studio