Anche se nella maggior parte dei casi non è necessariamente così, recentemente ho iniziato a leggere l'assembly generato del mio codice C ogni tanto, quando sono curioso dei tipi di ottimizzazioni che il mio compilatore sta facendo. Soprattutto per codice a basso livello o funzioni chiamate più volte.
Gli esempi includono:
- Verifica se una modifica al codice C ha un impatto sul codice generato.
- Controllare se la stessa espressione utilizzata due volte è ottimizzata in uno, o se assegnare una variabile fa la differenza.
- Verifica le modifiche che potrebbero generare dimensioni del codice generate dal bloat.
Ora questo non è un metodo perfetto con qualsiasi mezzo, è possibile che alcune differenze nell'output generato siano un'arma rossa, a causa di tutti i tipi di logica interna e ampli; soglie all'interno del compilatore, ma è comunque interessante a volte.
A questo punto guardando l'assemblea posso cercare ogni comando, ma in realtà non leggere l'assembly (amd64 come accade) .
Quindi la mia domanda è: qualcuno ha trovato utile imparare una certa quantità di assembly per scrivere codice C migliore? (o almeno ottieni più informazioni sul loro codice).
- Se sì, quanto è utile sapere?
- Quali tipi di problemi ti ha aiutato a risolvere?
Nota, il pericolo è che uno scrive il codice C per l'assembly che è molto specifico per il proprio sistema di sviluppatori - qualsiasi vantaggio può essere perso su un compilatore o un'architettura diversi, tenendo conto che sono ancora interessato in altri sviluppatori esperienza