Sono interessato ad esaminare l'output di assembly x86 del compilatore standard di Go per vedere se il mio codice viene realmente convertito in codice di assemblaggio ragionevolmente efficiente; si spera che, analizzando e esaminando l'output di assemblaggio, potrei avere un indizio su dove/come dovrei riscrivere il mio codice Go per ottenere il massimo delle prestazioni. Ma quando esamino il codice usando la flag -S, Go sputa un casino! Vorrei due cose:Uscita del gruppo Golang facile da leggere?
C'è un modo per rendere il compilatore Go discarica l'uscita di montaggio in un file, non solo stamparlo su Terminal?
Inoltre, c'è un modo per rendere separato il compilatore Go dal codice assembly in funzioni separate, con etichette? So che alcune funzioni potrebbero essere inline e quindi non apparire nel codice assembly. Quello che vedo è solo un insieme omogeneo di assemblaggi che è quasi impossibile da capire.
1) Che dire dell'utilizzo di '>' o di qualsiasi cosa la shell dei comandi supporti per reindirizzare l'output di un comando in un file? – Michael
Inoltre, il tuo approccio alla profilazione guardando il codice assembly potrebbe non essere il più produttivo. Hai esaminato gli strumenti di profilazione disponibili per il codice Go? (ad esempio http://blog.golang.org/profiling-go-programs) – Michael
Sono d'accordo con te, l'output di assemblaggio ha bisogno di miglioramenti. Il problema è che il compilatore Go non genera un vero assemblaggio. Genera qualcosa che assomiglia molto all'assemblaggio ma contiene un sacco di pseudo-istruzioni che verranno espanse dal linker.Solo dopo aver eseguito il collegamento, viene prodotto l'assemblaggio effettivo (e immediatamente assemblato). – fuz