Qual è il modo migliore (più veloce) per visualizzare il codice generato dal compilatore dai miei file? Sto usando principalmente C++, ma una soluzione che funziona per i linguaggi .NET sarebbe anche molto gradita.Come visualizzare il codice macchina o il codice byte compilato per una funzione C++ in Visual Studio 2010?
risposta
all'interno di Visual Studio, andare alle pagine di proprietà per il vostro progetto, poi vai a C/C++ → Output Files → Assembler Output
. Esso dovrebbe essere simile a questo:
Nota corrispondenti opzioni del compilatore, tutte le varianti di /FA
.
/FA
: Assembly-Only Listing/FAcs
: Assemblea, Codice Macchina e Source/FAc
: montaggio con Codice Macchina/FAs
: Assemblea con il codice sorgente
Sotto la " Opzione "Assembler Output" è un'opzione "Posizione elenco ASM". Questo è equivalente allo switch /Fa
(nota in maiuscolo!) E imposta il percorso del file dell'elenco di output.
È anche possibile esaminare l'assieme durante il debug (in un punto di interruzione), completo del codice sorgente corrispondente, facendo clic con il pulsante destro del mouse sulla riga corrente nell'area di testo del file di origine e facendo clic su "Vai a disassemblaggio".
Sarà saltare al montaggio presso la linea che si fa click destro su di una scheda separata. L'elenco sarà simile a questo:
Sì, lo so, gli screenshot non sono da Visual Studio 2010, ma i passi e l'aspetto generale sono gli stessi. Semplicemente non ho accesso immediato a VS2010 per creare schermate. :-)
Questa risposta è _awesome_. Tuttavia, credo che quando l'hai fatto l'output dell'assembler, credo che non crei binari. Se ricordo bene, dovresti annotarlo da qualche parte. –
@MooingDuck: questo è vero per un'esecuzione separata del preprocessore (/ P), ma almeno in VC2010, le varianti/FA continuano a generare binari. –
per NET è possibile utilizzare lo strumento ildasm
che viene fornito con il quadro per visualizzare l'IL.
impostare un punto di interruzione, premere CTRL + F11 –