Ich möchte die x86-Assembly-Ausgabe des Standard-Go-Compilers untersuchen, um zu sehen, ob mein Code wirklich in einigermaßen effizienten Assemblercode umgewandelt wird; hoffentlich könnte ich durch das Profilieren und Untersuchen der Assembly-Ausgabe einen Hinweis bekommen, wo/wie ich meinen Go-Code für maximale Leistung umschreiben sollte. Aber wenn ich den Code mit der -S-Flagge untersuche, spuckt Go ein Chaos aus! Ich würde zwei Dinge mag:Leicht zu lesende Golang-Baugruppenausgabe?
Gibt es eine Möglichkeit die Go-Compiler-Dump die Assembly Ausgabe in eine Datei zu machen, nicht einfach auf Terminal ausdrucken?
Gibt es auch eine Möglichkeit, den Go-Compiler den Assemblercode in separate Funktionen mit Beschriftungen zu trennen? Ich weiß, dass einige Funktionen inline sein können und daher nicht im Assembler-Code erscheinen. Was ich sehe, ist nur ein homogener Zusammenbau, der fast unmöglich zu verstehen ist.
1) Was ist mit '' 'oder was auch immer Ihre Befehlsshell unterstützt, um die Ausgabe eines Befehls in eine Datei umzuleiten? – Michael
Auch Ihre Vorgehensweise beim Profiling mit Blick auf den Assemblercode ist möglicherweise nicht die produktivste. Haben Sie sich die für Go-Code verfügbaren Profiling-Tools angesehen? (z. B. http://blog.golang.org/profiling-go-programs) – Michael
Ich stimme Ihnen zu, Montage-Ausgabe benötigt einige Verbesserungen. Das Problem besteht darin, dass der Go-Compiler keine tatsächliche Assembly generiert. Es erzeugt etwas, das viel wie Assembly aussieht, aber eine Menge Pseudo-Anweisungen enthält, die vom Linker erweitert werden.Erst nach der Verlinkung wird die eigentliche Montage hergestellt (und sofort montiert). – fuz