Un compilatore C di solito non produce C ottimizzato in qualsiasi momento. Piuttosto, il compilatore trasforma C in una rappresentazione interna semplificata e la maggior parte delle ottimizzazioni del compilatore verrà eseguita su one or more of those intermediate representations. Quindi il compilatore genera assembly o un binario da quello.
Il più vicino possibile è probabilmente quello di compilare un file all'assemblaggio senza ottimizzazione e di nuovo con l'ottimizzazione più alta, quindi confrontare l'output dell'assieme. Dovrai avere una buona conoscenza del linguaggio assembly per farlo. Se si utilizza gcc
, leggere le opzioni -S e -O su come eseguire (o non fare) questo.
Se il tuo obiettivo è scrivere codice più veloce, quindi, la soluzione migliore è scrivere una C migliore utilizzando algoritmi e strutture dati migliori al livello C usando attentamente il profiler.
Se il tuo obiettivo è solo capire l'ottimizzazione, prova Program Optimization e Compiler Optimization su Wikipedia per alcune informazioni generali.
fonte
2010-03-06 05:32:22
Sì, posso ottenere il codice assembler utilizzando il comando objdump -s. e possiamo produrre codice assembly usando cc -S – sganesh
Ma se so come sta facendo l'ottimizzazione posso provare ad implementare il mio ottimizzazione – sganesh
L'ottimizzazione della C effettiva è praticamente impossibile da fare in modo significativo. La maggior parte dei tipi di algoritmi di analisi statici sono progettati per funzionare su una qualche forma di codice "a tre indirizzi" già tradotto da un compilatore. Gli algoritmi sono più facili da scrivere quando i dati su cui operano sono più semplici. Inizia con il "libro dei draghi" e inizia da lì. (http://en.wikipedia.org/wiki/Dragon_Book_(computer_science)) –