Es gibt Zeiten, in denen Disassemblies aus höheren Sprachen wie C oder C ++ nützlich sind. Das Lesen eines Buches über Assembly ist offensichtlich ein notwendiger Teil des Verständnisses der Compiler-Ausgabe, aber nach meiner Erfahrung ist das Schreiben von Assembler-Code von Grund auf eine ganz andere Sache als das Lesen und Verstehen der Opcodes, die ein Compiler erzeugt. Die Bücher, die ich bei der Montage kenne, decken diesen Teil nicht sehr gut ab, obwohl ich glaube, wenn du jemals mit Assembly in Kontakt kommst, dann meistens, indem du versuchst, den Compiler-Output zu verstehen.
Kennst du fundierte Tutorials (oder vielleicht Bücher) über die Interpretation von Compiler-Ausgaben?
Was ich im Sinn habe, wäre eine Präsentation von gemeinsamen Hochsprachen-Idiomen und wie diese von gewöhnlichen Compilern (msvc und gcc) in Assembler übersetzt werden.
Viele ähnliche Fragen hier auf SO:
Die meisten Poster zielen auf dasselbe ab wie Sie, das heißt Assemblercode lesen und nicht neu schreiben.
Alles [*] Ich weiß über das Lesen von x86-Assembly, ich lernte durch Single-Stepping in einem Debugger in der Disassembly-Ansicht. Es ist nützlich, eine Opcode-Referenz gleichzeitig geöffnet zu haben, aber um ehrlich zu sein, können Sie ohne die meiste Zeit leben, denn solange der Compiler nicht zu viel optimiert, wissen Sie, was er tatsächlich von der C-Quelle macht. Inhalt von Variablen usw.
[*] Nun, die meisten Dinge.
Sie könnten einige C-, C ++ - Dateien kompilieren und die Assembler-Ausgabe (Option -s, denke ich) behalten und die generierte Ausgabe mit Ihren Quelldateien vergleichen.
Dies sollte Ihnen helfen, den generierten Assembler-Code zu verstehen und sich wiederholende Muster (Methoden- / Funktionsaufrufe, Returns, Schleifen, Initialisierung usw.) zu erkennen. Aktivieren Sie keine Optimierung, da dies den generierten Code transformiert und das Verständnis erschwert.