2011-01-24 2 views

risposta

14

Il codice deve essere compreso dalla macchina, e, in quanto non è interpretata né utilizzo di una VM, viene dapprima trasformato nel montaggio. È possibile ottenere questo codice assembly utilizzando il flag -S nelle opzioni di compilazione g ++ (a condizione che si utilizzi g ++ ovviamente).

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

dovrebbe fare il trucco.

3

Dipende dal compilatore. Non ci sono regole reali su ciò che compila C++, eccetto che a un certo punto dovrebbe essere eseguito su un computer. La maggior parte dei compilatori ha un passaggio da compilare per il montaggio.

con GCC è possibile aggiungere -S per compilare in un file .asm.

Per visual studio vedono http://codegem.org/2008/10/generate-assembly-from-c-code-in-visual-studio

16

La stragrande maggioranza dei compilatori C++ permette di convertire la sorgente C++ in file oggetto (codice macchina con informazioni di controllo sufficienti per essere collegati in un file eseguibile). Ad esempio, devi veramente fare a meno di ottenere gcc per generare il codice assembly (origine asm) utilizzando il flag -s. Normalmente, non vedresti mai l'assemblea.

Ma l'++ C Principio non si occupa la forma finale che è uscita dal compilatore, solo che il codice deve comportarsi in un certo modo quando lo si esegue.

Infatti, il primo "compilatori" C++ effettivamente generato codice C sorgente e poi compilati che.

Si può avere il compilatore C++ generare codice oggetto, bytecode Java, o anche GWBASIC, si deve essere sensazione masochista.

+1

Molto informativo, solo una domanda, come compilare il codice C++ in codice bytecode Java? –

+2

Bene, dovresti scrivere un compilatore per farlo. Scusate, non volevo sottintendere che esistessero compilatori là fuori per farlo, solo che era possibile e compatibile con gli standard per scriverne uno. – paxdiablo

+0

MSVC può essere compilato in MSIL, che è concettualmente simile ai bytecode Java. – MSalters