Dies ist eine alte Version des Dokuments!


x86-Assembler Tutorial (Entwurf)

Programmcode wird als Zahldarstellung in den Prozessor übergeben. Ein Programm besteht aus vielen Prozessorbefehlen, die nacheinander vom Prozessor aus dem Hauptspeicher eingelesen werden, interpretiert werden und ausgeführt werden.

Schreiben wir ein C-Programm, wird das C-Programm zunächst vom Compiler nach Assembler übersetzt, da Assembler eine 1:1 Umsetzung der Befehle des Prozessors ermöglicht. Dann wird der Assembler-Code in Objektdateien (Maschinencode, aber noch nicht ausführbar) überführt und zum Schluss mit allen benötigten Bibliotheken zusammengelinkt. Diese gelinkte Datei kann ausgeführt werden.

Assembler stellt also eine 1:1 Umsetzung der Maschinenbefehle dar. Dh. um Assemblerprogrammierung effizient nutzen zu können, sollten einige Grundlagen über den Aufbau einer beliebigen CPU, aber auch der speziellen CPU vorhanden sein. In diesem Tutorial widmen wir uns der Programmierung einer Intel x86 CPU.

x86 stellt dabei die so genannte Prozessorarchitektur dar, und legt somit fest, welche Befehle der Prozessor verarbeiten kann. Ein Prozessor einer anderen Architektur (bspw. ARM, Sparc, Alpha) kann die Befehle eines Programms für x86 nicht ausführen. Heutige Vertreter der x86-Architektur (mit einigen Erweiterungen) sind Intels i3/i5/i7-Prozessoren oder AMDs FX-Prozessoren. Vermutlich nutzen Sie zum Anzeigen dieser Seite einen x86-basierten Computer.

In den nächsten Kapiteln beschäftigen wir uns damit, warum man überhaupt noch Assembler können sollte, welche Vor- und Nachteile die „Sprache“ hat. Dann folgt eine Beschreibung des Aufbaus eines Assemblerprogramms mit dem gcc-Compiler gefolgt von einem Beispielprogramm.