Information Technology Reference
In-Depth Information
cher transparent, d.h. für einen Benutzer nicht erkennbar, in den Datenspeicherraum
eingebettet ist (siehe auch [112, 109]). Statt registerdirekt wird der Registerspeicher
über eine vier Bit breite Adressen relativ zu einem Stapelzeiger angesprochen.
Beliebige Zugriffe auf den Datenspeicherraum werden im Bedarfsfall transparent
auf den Registerspeicher umgeleitet. Somit sind Fallunterscheidungen, ob sich
Referenzen auf den Registerspeicherraum oder den Datenspeicherraum beziehen,
nicht notwendig. Außerdem sind alle vom Prozessor direkt unterstützten Datentypen
ohne Zusatzaufwand zugreifbar, und zwar auch dann, wenn sich der Zugriff auf den
Registerspeicher bezieht.
In Sprungbefehlen wird die indirekte Adressierung benötigt, um Sprungziele dyna-
misch, also zur Laufzeit auszuwählen. In RISC-Prozessoren wird dies verwendet,
um z.B. nach Bearbeitung eines Unterprogramms zum aufrufenden Programm
zurückzukehren 1 . Die Rücksprungadresse wird hierbei nicht, wie bei vielen CISC-
Prozessoren üblich, auf einem Stapel im Datenspeicherraum abgelegt, sondern in
einem ausgezeichneten Register. Um ins aufrufende Programm zurückzukehren,
muss dementsprechend ein indirekter Sprung mit dem Inhalt des Registers durchge-
führt werden. Weitere Einsatzmöglichkeiten der indirekten Adressierung von
Sprungzielen sind Aufrufe von virtuellen Methoden, Aufrufe von Unterprogrammen
aus dynamisch gebundenen Bibliotheken, Aufrufe von sog. Call-Back-Funktionen,
Fallunterscheidungen usw. [8].
Indirektindizierte Adressierung
Die indirektindizierte Adressierung ermöglicht den Zugriff auf eine zur Laufzeit
durch Addition oder Subtraktion einer Basisadresse und eines skalierten Indexes
berechnete effektive Adresse (Bild 1.10e). Hierbei ist die Basisadresse entweder
eine Konstante oder ein Registerinhalt und der Index grundsätzlich ein Registerin-
halt. Zur Skalierung wird normalerweise eine von mehreren möglichen Konstanten,
bei einigen Prozessoren, wie z.B. dem ARM7TDMI von ARM auch eine variable
Zweierpotenz verwendet [10].
Wie bereits angedeutet ist es möglich, die indirektindizierte durch die indirekte
Adressierung nachzubilden, und zwar, indem die Adresse nicht implizit, sondern
explizit vor dem Zugriff berechnet wird. Die indirektindizierte Adressierung weist
deshalb auch ähnliche Eigenschaften auf wie die indirekte Adressierung. Sie ist
jedoch leistungsfähiger, weil die Adressberechnung und der Zugriff in einem Schritt
erfolgen. Insbesondere ist es möglich, die indirekte Adressierung auch durch die
indirektindizierte Adressierung unter Verwendung der konstanten Basisadresse Null
und dem konstanten Skalierungsfaktor Eins nachzubilden (vergleiche Bild 1.10d
und 1.10e). Viele Prozessoren verfügen aus diesem Grund auch nur über die Mög-
lichkeit, indirektindiziert auf den Datenspeicherraum zuzugreifen [71, 90, 171].
Beispiel 1.6. Parameterübergabe in einem Stapel . Zahlreiche Programmiersprachen verwenden
Stapel ( Stack ) zur Speicherung lokaler Variablen und Übergabe von Unterprogrammparametern . In
1. Die Technik kam bereits vor Aufkommen der RISC-Prozessoren z.B. in der PDP11 von DEC
zum Einsatz [32].
Search WWH ::




Custom Search