Befehlssatz

Der Befehlssatz (englisch: instruction set, weshalb in der deutschen Fachsprache der Informatik der Begriff Instruktion mitunter synonym für Programmierbefehl verwendet wird) bezeichnet in der Informatik die Menge der Maschinenbefehle eines Mikroprozessors. Der Umfang des Befehlssatzes variiert je nach Prozessortyp beträchtlich. Relativ große Befehlssätze findet man in CISC-Prozessoren, möglichst kleine Befehlssätze werden in RISC-Prozessoren angestrebt. Heutige Hochleistungsprozessoren sind in der Regel hybride CISC/RISC-Prozessoren. Wie der Befehlssatz in der Hardware implementiert ist (zum Beispiel durch Mikroprogramme), bleibt dem Programmierer verborgen. Liegt ein konkretes Programm in den Befehlen eines Befehlssatzes vor, so spricht man auch von einem Programm in Maschinensprache.

Inhaltsverzeichnis

Eigenschaften von Befehlssätzen

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

Die einzelnen Befehle eines Befehlssatzes haben das allgemeine Format

 <Opcode> {<Operand>, {<Operand>}}

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

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. Die Befehlsnamen gehen meist von den englischen Wörtern move (bewegen), load (laden) oder transfer aus.

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.

Sprungbefehle 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.

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.

Mnemonics

Die Namen von Mikroprozessorbefehlen sind meist Kürzel, die auf englische Ausdrücke zurückgehen, siehe Erläuterungen oben im Kapitel Befehlsarten. Vom Hersteller oder spätestens vom Anbieter des Assembler-Programms wird die genaue Schreibweise exakt festgelegt und muss in einem Assembler-Quelltext in genau dieser Form verwandt werden. Die Befehle in dieser definierten Schreibweise nennt man Mnemonics, was andeuten soll, dass sie sich in dieser Form leichter merken lassen (Mnemotechnik) als die abstrakten Hex-Codes.

Kosmetisch haben einige Hersteller, wie zum Beispiel MOS Technology bei ihrem 6502, den Ehrgeiz entwickelt, die Lesbarkeit von solchen Programmtexten dadurch zu erhöhen, dass alle Befehlsmnemonics gleich lang (beim 6502 z. B. genau drei Buchstaben lang) sind und der Programmtext dadurch von alleine eine gewisse Grundformatierung aufweist.

Auffällig ist hier auch, wie beim Z80, der zum Intel 8080 abwärtskompatibel ist, die Schreibweise vieler Transferbefehle geändert wurde: Während bei Intel eine Reihe von Befehlen für verschiedene Arten von Transfers existieren, z. B. LDA, STA, LXI, MOV, MVI, LHLD, SHLD etc., „reparierte“ Zilog das, indem für alle diese Befehle das Mnemonic LD (für Load, laden) mit jeweils verschiedenen Operanden verwendet wurde, was den Befehlssatz wesentlich handlicher macht.

Befehlssatzarchitekturen

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:

Siehe auch

Weblinks


Wikimedia Foundation.

Synonyme:

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Befehlssatz — Befehlsrepertoire; Befehlsvorrat * * * Be|fehls|satz 〈m. 1u; Gramm.〉 = Imperativsatz * * * Be|fehls|satz, der (Sprachwiss.): Satz, der einen ↑ Befehl (1 a) beinhaltet. * * * I …   Universal-Lexikon

  • Befehlssatz — Be|fehls|satz …   Die deutsche Rechtschreibung

  • Befehlssatz-Architektur — Der Befehlssatz (englisch: instruction set, weshalb in der deutschen Sprache der Begriff Instruktion synonym für Befehl verwendet wird) bezeichnet in der Informatik die Menge der Maschinenbefehle eines Mikroprozessors. Der Umfang des… …   Deutsch Wikipedia

  • AT-Befehlssatz — Unter AT Befehlssatz versteht man einen Satz ursprünglich von der Firma Hayes Communications entwickelter und zum Quasi Standard gewordener Befehle zum Konfigurieren und Parametrieren von Modems. Die Zeichen AT stehen dabei für attention und… …   Deutsch Wikipedia

  • Hayes-Befehlssatz — Unter AT Befehlssatz versteht man einen Satz ursprünglich von der Firma Hayes Communications entwickelter und zum Quasi Standard gewordener Befehle zum Konfigurieren und Parametrieren von Modems. Die Zeichen AT stehen dabei für attention und… …   Deutsch Wikipedia

  • Orthogonaler Befehlssatz (Programmiersprachen) — Eine Programmiersprache hat einen orthogonalen Befehlssatz, wenn ihre Befehle bzw. Sprachkonstrukte sich nicht in ihrem Anwendungsbereich überschneiden, jeder Befehl also exklusiv für die eine für ihn bestimmte Aufgabe zuständig ist. Die Befehle… …   Deutsch Wikipedia

  • Orthogonaler Befehlssatz — Eine Programmiersprache hat einen orthogonalen Befehlssatz, wenn ihre Befehle bzw. Sprachkonstrukte sich nicht in ihrem Anwendungsbereich überschneiden, jeder Befehl also exklusiv für die eine für ihn bestimmte Aufgabe zuständig ist. Die Befehle… …   Deutsch Wikipedia

  • 3DNow!-Befehlssatz — 3DNow! Befehlssatz,   für 3D Darstellung konzipierte Befehlssatzerweiterung von AMD Prozessoren, die 1998 mit dem K6 2 eingeführt wurde. 3DNow! besteht aus 21 Befehlen, die vor allem verbesserte Gleitkomma Berechnungen erlauben. Mithilfe der… …   Universal-Lexikon

  • Hayes-Befehlssatz — Hayes Befehlssatz,   Gruppe von Kommandosequenzen, mit denen die Funktionsweise eines Modems oder ISDN Adapters gesteuert werden kann. Eine Kommandosequenz des Hayes Befehlssatzes beginnt immer mit dem Kommando »AT« (für Attention, dt. Achtung),… …   Universal-Lexikon

  • ARM11 — Logo ARM Prozessorchip von Conexant, welcher beispielsweise in Routern verwendet wird. Die ARM Architektur ist ein Kern Design für eine Familie von 32 Bit …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”