6 · Programmbefehle

Programmbefehle als Bits

Nicht nur Nutzdaten, auch ausführbare Programme werden letztlich durch Bitmuster repräsentiert.

Auch Programme sind Daten

Ein gespeichertes Programm ist selbst eine Folge von Bits. Der Prozessor interpretiert bestimmte Bitmuster als Maschinenbefehle. Damit das funktioniert, muss die Prozessorarchitektur eindeutig festlegen, welche Bitfolgen welche Operationen bedeuten.

Voraussetzung

Dieser Abschnitt ist leichter verständlich, wenn Register, Maschinenbefehle und der grundlegende Ablauf „Befehl holen – decodieren – ausführen“ bereits bekannt sind.

Operation und Operand

Viele Maschinenbefehle lassen sich vereinfacht in zwei Bestandteile zerlegen:

  • Operation (Opcode): Was soll geschehen?
  • Operand: Mit welchen Daten, Registern oder Adressen soll die Operation arbeiten?

Angenommen, ein fiktiver Prozessor verwendet 8-Bit-Befehle: Die ersten 3 Bit könnten den Opcode bestimmen, die verbleibenden 5 Bit den Operanden.

010 10110
^^^ ^^^^^
 |     └── Operand
 └──────── Opcode

Mit 3 Opcode-Bits wären 8 unterschiedliche Operationen möglich; 5 Operand-Bits erlauben 32 verschiedene Operandmuster. Die tatsächliche Bedeutung ist vollständig durch die Architektur festgelegt.

Ein kleines fiktives Beispiel

OpcodeBedeutung
000LOAD
001STORE
010ADD
011SUB
100JUMP

Das Bitmuster 01010110 könnte in dieser frei erfundenen Architektur bedeuten: ADD 22, weil 010 als ADD definiert ist und 10110₂ = 22₁₀.

Aufgabe

Entwirf drei weitere Opcodes. Welche Einschränkung entsteht, wenn du mehr als acht unterschiedliche Operationen benötigst? Welche Konsequenz hätte es, dem Opcode stattdessen 4 Bit zu geben?

Dasselbe Muster – andere Bedeutung

Eine Folge wie 01010110 besitzt ohne Kontext keine festgelegte Bedeutung. Sie könnte die Zahl 86, ein Teil eines Zeichencodes, ein Farbkanal, ein Maschinenbefehl oder etwas völlig anderes sein.

Damit schließt sich der Kreis zur Informationsdarstellung: Bitmuster werden erst durch Regeln und Kontext zu Information.

Quelle und Bearbeitung

Inhaltlich neu formulierte deutschsprachige Bearbeitung nach dem Computer Science Field Guide – Data Representation, einem Projekt der Computer Science Education Research Group der University of Canterbury (Neuseeland). Die Ausgangsinhalte stehen unter CC BY-SA 4.0. Diese Bearbeitung steht ebenfalls unter CC BY-SA 4.0. Änderungen: Übersetzung, Neuformulierung, didaktische Kürzung/Erweiterung, eigenes Layout und eigene Interaktionen.