Information Technology Reference
In-Depth Information
Nach Bearbeitung der Anforderung wird das Ausnahmeprogramm i.Allg. vergleich-
bar einem Unterprogramm beendet, wobei zur Berechnung der effektiven Rück-
sprungadresse die Summe der Adresse des vor der Unterbrechung gerade noch
beendeten Befehls und dessen Breite benutzt wird. Bei einem Fehler muss ggf.
jedoch der fehlerhaft beendete Befehl nach korrigierenden Maßnahmen wiederholt
ausgeführt werden, was sich mit Hilfe der einfachen indirekten Adressierung für den
Rücksprung erreichen lässt.
Befehlszählerrelative Adressierung
Bei der befehlszählerrelativen Adressierung bildet der Prozessor die effektive
Adresse, indem der Inhalt des Befehlszählers und ein nicht skalierter Index addiert
oder subtrahiert werden. Der Zugriff bezieht sich wegen des als Basis verwendeten
Befehlszählers auf den Befehlsspeicherraum. Der Befehlszähler verweist im
Moment des Zugriffs auf eine effektive Adresse, die in fester Beziehung zur effekti-
ven Adresse des dabei ausgeführten Befehls steht (meist die effektive Adresse des in
Ausführung befindlichen oder des folgenden Befehls). Als Index kann ein konstan-
ter oder ein in einem Register befindlicher variabler Wert benutzt werden (Bild
1.10f). In ihm ist die Distanz für den Zugriff explizit codiert. Da in einem statisch
gebundenen Programm alle Distanzen unveränderlich sind, lässt sich die befehls-
zählerrelative Adressierung verwenden, um unabhängig von der effektiven Ladea-
dresse eines Programms auf beliebige darin codierte Einheiten zuzugreifen. Dies
wird z.B. genutzt, um in das Programm eingebettete Konstanten zu adressieren.
Die befehlszählerrelative Adressierung von Sprungzielen ist meist nur mit einer
konstanten vorzeichenbehafteten Distanz möglich. In ihr ist codiert, wie viele Bytes
jeweils übersprungen werden sollen, und zwar zu größeren effektiven Befehlsadres-
sen mit einer positiven und zu kleineren effektiven Befehlsadressen mit einer nega-
tiven Distanz. Falls für alle Zugriffe, die sich auf Einheiten im Programm beziehen,
und für alle Sprungbefehle befehlszählerrelative Adressen zum Einsatz kommen, ist
das Programm an eine beliebige Adresse ladbar. Entsprechende Programme
bezeichnet man als verschiebbar ( relocatable ) [164].
Modifizierende indirekte Adressierung
Bei der prämodifizierenden oder postmodifizierenden indirekten Adressierung wird
der Inhalt eines Registers zur indirekten Adressierung eines Datums im Datenspei-
cherraum verwendet und die im Register gespeicherte effektive Adresse vor bzw.
nach dem Zugriff durch Addition oder Subtraktion mit einer Konstanten oder einem
skalierten Registerinhalt verändert (Bild 1.12). Die modifizierenden indirekten
Adressierungsarten sind in dieser allgemeinen Form z.B. im ARM7TDMI von
ARM ltd. [10] oder im Nemesis C der TU Berlin realisiert [114, 198].
Die meisten anderen Prozessoren sind hingegen weniger flexibel. Zum Beispiel
kann der ColdFire MFC5206 von Motorola den Inhalt eines Registers vor dem indi-
rekten Zugriff dekrementieren ( predecrement ) oder nach dem indirekten Zugriff
inkrementieren ( postincrement ). Zur Modifikation wird dabei immer eine Kon-
Search WWH ::




Custom Search