Assembling Pi

A.2 Basic Blocks implementieren

2.3.7 Datenverarbeitung: Bedingungscodes

Damit Computer komplexe Aufgaben bewältigen können, muss der Programmablauf flexibel sein. Diese Flexibilität wird durch bedingte Ausführungen erreicht – also die Fähigkeit, je nach Bedingung unterschiedliche Anweisungen auszuführen. Viele Probleme erfordern dynamisches Verhalten, bei dem Programme auf verschiedene Daten, Zustände oder Eingaben reagieren.

Im ARM-Assembler wird Flexibilität durch Bedingungscodes erreicht, die in vielen Maschinenbefehlen kodiert sind. Vor der Ausführung wird der Bedingungscode gelesen, und das Current Program Status Register (CPSR) entsprechend geprüft. Nur wenn die im Code festgelegte Bedingung erfüllt ist, führt die CPU die Instruktion aus. So können Verzweigungen, Schleifen oder operationale Anpassungen je nach Datenlage realisiert werden.

Die Bedingungscodes sind entscheidend für die Fähigkeit des Computers, flexibel auf Daten zu reagieren, etwa um eine Schleife nur bei erfüllter Bedingung fortzusetzen oder Berechnungen auf Basis eines Vergleichs durchzuführen. Ohne bedingte Ausführung wäre ein Computer nur eine einfache Rechenmaschine, die stur eine Abfolge von Befehlen abarbeitet. Die Mikroarchitektur des Prozessors nutzt diese Codes, um Verzweigungen zu ermöglichen und damit die Vielseitigkeit moderner Computer sicherzustellen.

Unsigned Bedingungen (Vorzeichenlos):

Signed Bedingungen (Vorzeichenbehaftet):

Allgemeine Bedingungen:

Diese Bedingungscodes sind essenziell, um bedingte Instruktionen in ARM-Assembler umzusetzen.

Die folgende Tabelle zeigt den Zusammenhang von Bedingungen und Flags:

Abkürzung Bedeutung Flags
EQ Equal Z=1
NE Not equal Z=0
CS/HS Unsigned higher or same C=1
CC/LO Unsigned lower C=0
MI Minus N=1
PL Positive or Zero N=0
VS Overflow V=1
VC No overflow V=0
HI Unsigned higher C=1 & Z=0
LS Unsigned lower or same C=0 or Z=1
GE Greater or equal N=V
LT Less than N!=V
GT Greater than Z=0 & N=V
LE Less than or equal Z=1 or N!=V
AL Always -
zurück Hauptmenü weiter
2.3 Datenverarbeitung
2.3.1 Die ALU
2.3.2 Arithmetische Instruktionen
2.3.3 Logische Instrukionen
2.3.4 Shift Operationen
2.3.5 Das Statusregister
2.3.6 Vergleichsoperatoren
2.3.7 Bedingungscodes
2.3.8 Bedingte Instruktionsausführung