Il codice C++ viene compilato nel codice assembly? Se abbiamo codice C++, saremo in grado di ottenere il codice assembly?Il codice C++ viene compilato in codici assembly?
risposta
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.
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
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.
Molto informativo, solo una domanda, come compilare il codice C++ in codice bytecode Java? –
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
MSVC può essere compilato in MSIL, che è concettualmente simile ai bytecode Java. – MSalters