Mentre è possibile utilizzare le opzioni -fdump-tree-all
e -fdump-rtl-all
in gcc, non penso che il loro output sia molto utile per uno studente del compilatore. FWIW, ho iniziato a lavorare su gcc come parte dei miei studi di dottorato, avendo già completato due corsi di laurea e ho trovato gcc
ei suoi file di debug erano opachi e difficili da seguire.
Inoltre, gcc non segue realmente la progettazione di libri di testo dei compilatori. Nessuno, davvero, perché non funziona bene in quel modo. Sono abbastanza sicuro che gcc non produce un albero di analisi o un albero di sintassi astratto. Costruisce un IR (chiamato gimple) su cui eseguire le sue ottimizzazioni di alto livello.
Vorrei suggerire di provare LLVM, che ha una reputazione per essere ben progettato e facile da seguire. Un'altra alternativa è scaricare il codice da un libro di testo, in particolare il libro di Appel, assumendo che sia disponibile.
Un altro suggerimento, se posso raccomandare il mio per un momento, è quello di utilizzare phc. Con phc, è possibile vedere l'albero di analisi come un'immagine e visualizzare l'AST e il codice sorgente dopo ogni singola passata nel compilatore. Here is a comparison of parts of the AST and the parse tree. Sono generati banalmente usando phc. Sul ramo dataflow, è possibile visualizzare gli IR del compilatore, il modulo CFG, SSA e l'output di debug di inferenza di tipo e analisi alias. Puoi anche attivare le ottimizzazioni e attivare e disattivare i video per vedere l'effetto che hanno.
Penso che questo potrebbe essere utile per voi.
fonte
2009-10-01 20:45:30
Una nota per i lettori: con l'opzione il compilatore scarica l'albero in un file con il nome del codice sorgente e un suffisso come ".optimized". Non è affatto ovvio, ho speso ≈20 minuti, ho esaminato una documentazione e ho cercato casi in cui gcc non produce la discarica, quando occasionalmente ho notato il nuovo file * (che non è facile dato che ho fatto un test in '/ tmp /', che è piuttosto junky) *. –