Eine Zusammenfassung der verschiedenen Meinungen in den Hacker-News-Kommentaren dazu, wie man Assemblersprache lernen kann, lautet wie folgt:
Um die Grundlagen von ARM-Assembly intuitiv zu lernen, ist es hilfreich, das Online-Spiel "OFRAK Tetris" auszuprobieren. Die Blöcke sind ARM-Assembly-Befehle, und beim Spielen kann man schnell lernen, Disassemblierungen zu lesen.
Mit nur einer x86-Befehlsreferenz kann man mithilfe der Inline-Assembler-Syntax des D-Compilers einfache Ausdrücke kompilieren und lernen, indem man das erzeugte Assembly analysiert.
Es ist auch sinnvoll, Bücher wie "Computer Architecture: A Quantitative Approach", "Getting Started with LLVM Core Libraries" und "The Architecture of Open Source Applications" sowie die offiziellen LLVM-Dokumente, Tutorials und Referenzen heranzuziehen.
Es hilft, Optimierungsleitfäden oder Architekturhandbücher von CPU-Herstellern zu lesen, etwa Apples "Apple Silicon CPU Optimization Guide" oder Intels "Software Developer Manuals".
Es ist ebenfalls eine gute Methode, kleine Programme in Ghidra oder Godbolt einzugeben und zu beobachten, welches Assembly ausgegeben wird. Dabei sollte man verstehen, dass vom Compiler erzeugter Code eher wegen der Optimierungs-Pässe gut ist als wegen der Instruktionsauswahl.
Wichtig ist, zuerst die Handbücher einer bestimmten Architektur wie PowerPC, x86 oder ARM zu lesen und dann kleine C-Programme zu kompilieren und die Disassemblierung zu analysieren, um die Zuordnung zwischen Code und Instruktionen zu verstehen.
Empfehlenswert ist auch ein Blick in "Introduction to 64 Bit Assembly Programming for Linux and OS X" sowie in Architekturunterlagen zu ARMv7, ARMv8, RISC-V und x86. Auch die Analyse von Beispielcode auf RosettaCode oder GitHub ist hilfreich.
Mit dem Spiel "Turing Complete" selbst eine ISA zu bauen und Rätsel in Assembly zu lösen, ist ebenfalls eine unterhaltsame Methode.
Man kann auch mit einem NASM-Tutorial beginnen und anschließend die Intel-Handbücher konsultieren.
Es wird außerdem empfohlen, mit dem Projekt "Nand2Tetris" Assembly und Compiler-Grundlagen aufzufrischen.
1 Kommentare
Hacker-News-Meinung
Eine Zusammenfassung der verschiedenen Meinungen in den Hacker-News-Kommentaren dazu, wie man Assemblersprache lernen kann, lautet wie folgt: