it-swarm-eu.dev

Gibt es ein kanonisches Buch über x86-Assembly?

Es gibt viele Bücher über die Versammlung. Normalerweise befassen sie sich jedoch 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-Versammlungsbücher scheinen ... nicht zu existieren.

Angenommen, ich versuche, einen Spielzeug-Compiler zu erstellen, der Windows Portable Executable-Dateien generiert.

Gibt es ein Buch, das de facto der Standard für die Beschreibung von Best Practices, Entwurfsmethoden und anderen hilfreichen Informationen zur x86-Assembly ist? Was macht dieses Buch so besonders?

25
Billy ONeal

Ich habe Assemblersprache 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 nicht viel Veränderung bemerkt, so dass Sie wahrscheinlich ein älteres Exemplar billig kaufen könnten. Die Leute beschweren sich über die Nutzung seiner eigenen Bibliothek für E/A, aber er erklärt Ihnen in den letzten Kapiteln, wie es "hart" geht.

18
dboss

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: Entwicklerhandbuch für Intel® 64- und IA-32-Architekturen

18
Jesper

Die Kunst der Assembly-Programmierung ist eine hervorragende Ressource, die sich mit x86-Programmierung befasst.

x64 ABI-Dokumentation ist ebenfalls nützlich. Ich habe versucht, einen Link zu der Version auf der AMDs-Website zu finden, aber ich kann ihn anscheinend nicht mehr finden. Ich denke, dieser muss dies tun.

Etwas, das beim Lernen ziemlich hilfreich sein kann, ist, anstatt zu versuchen, eine vollständige App von Grund auf in Assembly zu schreiben, das meiste davon in C (oder einer anderen kompilierten Sprache) zu schreiben und dann einen Teil des Assembly-Codes von aufzurufen Das. Wenn Sie dies getan haben, kehren Sie es um, schreiben Sie ein Assembly-Programm und rufen Sie einige C-Funktionen auf.

Bearbeiten: Tippfehler behoben.

9
Orclev

Ein sehr gutes Buch zum Erlernen von x86 Assembly ist Pentium Processor Optimization Tools . Während das Hauptaugenmerk des Buches auf der Optimierung des Assembly-Codes liegt, lehrt es Pentium Assembly auf dem Weg und ist auch ein gutes Nachschlagewerk.

Es ist lange vergriffen, aber nicht schwer zu finden.

Es wird mit einer Diskette geliefert, die einen "Assembly Code Optimizer" enthält. Es optimiert Ihren Code nicht wirklich, sondern erstellt stattdessen eine kommentierte Liste, die darauf hinweist, wo Ineffizienzen wie Pipeline-Stalls liegen.

Das mit einem Buch gelieferte Tool ist eine limitierte Version eines funktionsfähigeren Produkts, das die Firma des Autors früher verkauft hat, aber aus Gründen, mit denen ich nicht vertraut bin, sind sie schon lange nicht mehr im Geschäft. Ich weiß nicht warum - ich würde denken, ein solches Tool würde sich wie Hotcakes verkaufen.

x86 ist im Allgemeinen ein sehr komplexes Thema, da es viele Varianten gibt, die von verschiedenen Modellen von Mikroprozessoren unterstützt werden. Sobald Sie die Grundlagen kennen, sollten Sie in den Datenbüchern von Intel oder AMD nach dem genauen Chip suchen, 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.

4
Mike Crawford

Probieren Sie das Wikibook aus - http://en.wikibooks.org/wiki/X86_Assembly . Es gibt einen guten Einstieg in die Assemblersprache.

Das Schwierige an Assembly ist, zu erkennen, wie einfach es ist und dass Sie bei dieser Einfachheit bleiben müssen.

1
Philip Oakley