Befehlssatz

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel beschäftigt sich mit dem Befehlssatz in der Informatik. Für eine Beschreibung des Begriffs in der Grammatik siehe Imperativsatz.

Der Befehlssatz (englisch: instruction set) eines Prozessors bezeichnet in der Rechnerarchitektur die Menge der Maschinenbefehle, die ein bestimmter Prozessor ausführen kann. Je nach Prozessor variiert der Umfang des Befehlssatzes zwischen 46 und über 500 Befehlen. CISC-Prozessoren haben tendenziell größere Befehlssätze als RISC-Prozessoren, gleiches gilt für neuere Prozessoren gegenüber älteren Prozessoren.

In erweitertem Sinn bezeichnet der Begriff ,Befehlssatz‘ den Befehlsvorrat (auch Synonym für ,Befehlssatz‘)[1] einer Programmiersprache im Allgemeinen.[2]

Eigenschaften von Befehlssätzen[Bearbeiten]

Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Näheres ist eventuell auf der Diskussionsseite oder in der Versionsgeschichte angegeben. Bitte entferne zuletzt diese Warnmarkierung.

Ein Befehlssatz heißt orthogonal, wenn jeder Befehl auch jede Adressierungsart des Prozessors verwenden kann. Unter der Adressierungsart eines Prozessors versteht man dabei die Art und Weise, wie ein Prozessor mittels Adressangaben, Offsets und Registerinhalten die effektive Adresse von Operanden berechnen kann.

Ein Befehlssatz wird als symmetrisch bezeichnet, wenn alle Datentypen und Adressierungsarten eines Befehls nicht nur für seine Quell-, sondern auch für seine Zieloperanden erlaubt sind. Die Datentypen eines Prozessors umfassen dabei alle Typen, die unmittelbar mittels Maschinenbefehlen (d. h. ohne eine softwaremäßige Emulation) bearbeitet werden können.

Befehlsformate[Bearbeiten]

Die einzelnen Befehle eines Befehlssatzes enthalten im Allgemeinen einen <Opcode> und einen oder mehrere <Operanden>, die Struktur und das Format dieser Angaben sind je Befehlstyp einheitlich festgelegt.

Welcher Befehl gemeint ist, wird jeweils durch den Opcode spezifiziert. Die Breite der in einem Befehlssatz verwendeten Worte (d. h. Opcode/Operanden-Kombinationen) variiert je nach Prozessortyp deutlich. Sie kann insbesondere länger als gewöhnliche Speicherworte, d. h. als die Datenbusbreite des Prozessors sein. In diesem Fall müssen die Befehle durch mehrere Speicherzugriffe aus dem Speicher in den Prozessor geladen werden.

Diese „Zwei-Operanden-Befehlsform“ ist eine typische, aber nicht die einzig vorkommende. Es gibt daneben sowohl Prozessoren, die Befehle mit nur maximal einem Operanden als auch solche mit maximal drei Operanden aufweisen. Bei einem einzelnen Operanden müssen alle Befehle als zweiten Operanden (implizit) ein prozessorinternes Register (z. B. den Akkumulator) verwenden. Die Drei-Operanden-Befehle unterscheiden nach Quelle, verknüpftem Wert und Resultatziel, so dass die Quelle nicht überschrieben werden muss.

Befehlsarten[Bearbeiten]

Der Befehlssatz eines Mikroprozessors setzt sich grob aus wenigen Arten von Befehlen zusammen.

Mit Transferbefehlen werden Daten innerhalb des Systems bewegt. Als Quelle und als Ziel kommen dabei Speicherstellen und/oder Prozessorregister in Frage. Die Daten werden dabei typischerweise nicht verändert und nur kopiert, d. h. bleiben an ihrem Quellort unverändert bestehen. Je nach Befehl und je nach Prozessortyp können dabei einzelne Bytes oder auch gleich mehrere auf einmal transportiert werden. Bei komplizierteren Adressierungsarten können sowohl für Quelle als auch Ziel zusätzliche Register und ggf. Berechnungen damit ins Spiel kommen, um z. B. per indizierter Adressierung tabellenförmig gespeicherte Daten abzuarbeiten oder ganze Speicherbereiche umzukopieren. Die Befehlsnamen gehen meist von den englischen Wörtern move (bewegen), load (laden), store (speichern) oder transfer aus.

Mit Befehlen zur Datenmanipulation werden die Inhalte von Speicherzellen modifiziert (Beispiele: shift, convert)[3]

Arithmetische und logische Befehle führen ebensolche Operationen an vorhandenen Werten durch. Hier wird also gerechnet, gezählt oder eine UND-Verknüpfung ausgeführt. Der Hauptoperand dabei ist sehr oft ein Prozessorregister (in den meisten Fällen der Akkumulator), aber nicht notwendigerweise. Ansonsten gilt für die Operanden das Gleiche wie bei den Transferbefehlen oben. Die Befehlsnamen sind meist englische Kürzel für die jeweilige Operation, wie z. B. ADD oder AND.

Ein-/Ausgabebefehle dienen zum Lesen und Schreiben von Daten über Peripheriegeräte, die Verbindungsmedien zur 'Außenwelt des Computers'.

Sprungbefehle (auch Befehle zur Programmkontrolle genannt)[3] dienen zu Verzweigungen innerhalb eines Programmablaufs, zum Bilden von Schleifen, Reaktionen auf verschiedene Zahlenwerte und Aufruf von Unterprogrammen (Subroutinen). Hierbei unterscheidet man unbedingte Sprünge und bedingte Sprünge, wobei letztere typischerweise abhängig vom Zustand bestimmter Bits des Prozessor-Zustandsregisters einer Verzweigung folgen oder auslassen. Die Befehlsnamen bauen meist auf den englischen Wörtern jump (springen) oder branch (verzweigen) auf.

Stack-Befehle speichern Daten auf den Stack (Befehlsname meist englisch push, für auf den Stapel schieben) oder holen Daten von dort zurück (Befehlsnamen pop oder auch pull, für ziehen). Dabei wird das Stackpointer-Register automatisch aktualisiert. Auch hier werden je nach Befehl und Prozessortyp ein oder mehrere Bytes auf einmal bewegt. Viele CPUs besitzen keine Stack-Befehle.

Kombinierte Befehle sind aus elementaren Aktionen der obigen Befehlsarten zusammengesetzt. Beispielsweise wird beim Aufruf einer Subroutine meist sowohl ein Sprung ausgeführt als auch die bisherige Programmadresse als Rücksprungziel auf den Stack gespeichert. Manche Prozessoren unterstützen Zählschleifen z. B. durch Befehle, die sowohl einen Zählerstand herauf- oder herunterzählen, als auch bei Erreichen der Zählgrenze (z. B. Unterlauf beim Herabzählen auf Null) einen bedingten (Rück-)Sprung ausführen. Vor allem Befehle wie der Letztere sind typisch für CISC-Prozessoren.

Befehlssatzarchitekturen[Bearbeiten]

Hauptartikel: Befehlssatzarchitektur

Will man eine Familie von Prozessoren mit ähnlichem Befehlssatz zusammenfassen, so spricht man auch von einer Befehlssatzarchitektur (engl. Instruction Set Architecture, kurz: ISA). Verbreitete Befehlssatzarchitekturen sind beispielsweise:

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Duden Informatik ISBN 3-411-05232-5
  2. Beispiel in Standard- und Individuallösungen für Informationssysteme siehe online „... der Befehlssatz der Programmiersprache ABAB ...“
  3. a b hu Berlin in Technische Informatik 2: Befehlssatz: Eleganz vs. Effizienz (PDF; 166 kB)