Es gibt viele Bücher über die Montage. Sie befassen sich jedoch normalerweise mit ISAs, die mir egal sind, wie MIPS oder ARM. Ich beschäftige mich nicht mit diesen Architekturen; Es gibt keinen Grund für mich, sie zu lernen.
Aber x86-Assemblybücher scheinen ... nicht vorhanden zu sein.
Angenommen, ich versuche zum Beispiel, einen Toy-Compiler zu erstellen, der Windows Portable Executable-Dateien generiert.
Gibt es ein Buch, das de facto als Standard für die Beschreibung von Best Practices, Entwurfsmethoden und anderen hilfreichen Informationen zur x86-Assembly gilt? Was macht dieses Buch so besonders?
Antworten:
Ich habe Assembler für x86-Prozessoren als Lehrbuch verwendet, als ich am College war, und fand es sehr einfach zu verstehen. Ich habe die ältere vierte Ausgabe und habe sie mit der sechsten Ausgabe verglichen und habe keine großen Veränderungen bemerkt, so dass Sie wahrscheinlich ein älteres Exemplar billig kaufen könnten. Die Leute beschweren sich über die Verwendung seiner eigenen Bibliothek für E / A, aber er erklärt Ihnen, wie Sie dies in den letzten Kapiteln auf "harte" Weise tun.
quelle
Der naheliegende Ort ist die Website von Intel, auf der Sie Programmier- und Referenzhandbücher zum Herunterladen finden, die alles enthalten, was Sie über die x86-Architektur wissen müssen.
Hier: Intel® 64- und IA-32-Architekturen Software-Entwicklerhandbücher
quelle
Die Art of Assembly Programming ist eine hervorragende Ressource, die sich mit x86-Programmierung befasst.
Die x64-ABI-Dokumentation ist ebenfalls hilfreich. Ich habe versucht, einen Link zu der Version zu finden, die sich auf der AMD-Website befindet, aber ich kann ihn anscheinend nicht mehr finden. Ich denke, dieser muss es tun.
Etwas, das beim Lernen ziemlich hilfreich sein kann, ist, anstatt zu versuchen, eine komplette App von Grund auf in Assembler zu schreiben, das meiste davon in C (oder einer anderen kompilierten Sprache) zu schreiben und dann einen Teil des Assembler-Codes von aufzurufen Das. Wenn Sie das getan haben, kehren Sie es um, schreiben Sie ein Assemblerprogramm und rufen Sie einige C-Funktionen auf.
Bearbeiten: Ein Tippfehler wurde behoben.
quelle
Ein sehr gutes Buch zum Erlernen von x86-Assembly sind die Pentium Processor Optimization Tools . Während das Hauptaugenmerk des Buches auf der Optimierung des Assembler-Codes liegt, wird die Pentium-Assemblierung auf diesem Weg vermittelt, und es ist auch ein gutes Nachschlagewerk.
Es ist lange vergriffen, aber nicht schwer zu finden.
Es wird mit einer Diskette geliefert, die einen "Assembler-Code-Optimierer" enthält. Es optimiert Ihren Code nicht wirklich, sondern erstellt stattdessen eine kommentierte Liste, die darauf hinweist, wo Ineffizienzen wie Pipeline-Stillstände liegen.
Das Tool, das mit einem Buch geliefert wird, ist eine limitierte Version eines eher merkwürdigen Produkts, das die Firma des Autors früher verkaufte. Ich weiß nicht warum - ich würde denken, ein solches Tool würde sich wie ein heißer Kuchen verkaufen.
x86 ist im Allgemeinen ein sehr komplexes Thema, da es viele Varianten gibt, die von verschiedenen Mikroprozessormodellen unterstützt werden. Sobald Sie die Grundlagen kennen, sollten Sie die Datenbücher von Intel oder AMD nach dem genauen Chip durchsuchen, auf den Sie abzielen. Leider ist Code, der auf einem CPU-Modell schnell ausgeführt wird, auf einem anderen Chip möglicherweise nicht so schnell.
quelle
Probieren Sie das Wikibook aus - http://en.wikibooks.org/wiki/X86_Assembly . Es gibt einen guten Einstieg in die Assemblersprache.
Das Schwierige an der Montage ist, zu erkennen, wie einfach sie ist und dass Sie bei dieser Einfachheit bleiben müssen.
quelle