Скомпилирован ли код С++ для кода сборки? Если у нас есть код на С++, мы сможем получить код сборки?
Скомпилирован ли код С++ для ассемблерных кодов?
Ответ 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