2.2.4 Adressierungsarten

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
 
(24 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<loop_area type="definition">'''Definition: Adressierungsart'''<br />Unter einer Adressierungsart versteht man eine Möglichkeit, wie die CPU einen in einem Befehl angegebenen Operanden interpretiert.
<p>
Eine CPU kann verschiedene Adressierungsarten unterscheiden.
</p>
 
<br />
== Definition: Adressierungsart ==
<p>
<loop_index id="5fa9783b55574">Adressierungsart|Operand</loop_index>
<loop_area type="definition">
<p>
Unter einer Adressierungsart versteht man eine Möglichkeit, wie die CPU einen in einem Befehl angegebenen Operanden interpretiert.
</p>
</loop_area>
</loop_area>
</p>


Das Ziel bei der Interpretation eines Operanden während der Ausführung eines Befehls auf der CPU ist zunächst herauszufinden,
<p>
* ob der Operand eine konkrete Zahl (Konstante) darstellt,
Das Ziel bei der <loop_index id="5fa9783b5557e">Interpretation, Operand|Operand, Interpretation</loop_index>Interpretation eines Operanden während der Ausführung eines Befehls auf der CPU ist zunächst herauszufinden,
* ob der Operand ein konkretes Register auf der CPU bezeichnet,
* ob der Operand eine konkrete Zahl (<loop_index id="5fa9783b55585">Konstante</loop_index>Konstante) darstellt,
* oder ob mit ihm die sogenannte ''effektive Adresse'' ermittelt werden kann.
* ob der Operand ein konkretes <loop_index id="5fa9783b5558b">Register</loop_index>Register auf der CPU bezeichnet,
* oder ob mit ihm die sogenannte ''<loop_index id="5fa9783b55592">effektive Adresse|Adresse, effektive</loop_index>effektive Adresse'' ermittelt werden kann.
</p>


<loop_area type="definition">'''Definition: Effektive Adresse (Physikalische Adresse)'''<br />
<br />
Unter der '''effektiven Adresse''' versteht man die tatsächliche Adresse einer Speicherzelle im Hauptspeicher. Man nennt dieses auch die '''physikalische Adresse'''.
== Definition: Effektive Adresse ==
<p>
<loop_index id="5fa9783b55598">Physikalische Adresse|Adresse, physikalisch</loop_index>
<loop_area type="definition">
<p>
Unter der '''effektiven Adresse''' versteht man die tatsächliche Adresse einer Speicherzelle im Hauptspeicher. Man nennt diese auch die '''physikalische Adresse'''.
</p>
</loop_area>
</loop_area>
</p>


Im Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor] wurden bereits zwei Varianten gezeigt:
<br />
* Der Operand ist eine Zahl
* Der Operand ist eine Speicheradresse


==== Operand ist eine Zahl ====
== Verschiedene Adressierungsarten ==
In diesem Fall steht im Befehl eine konkrete Zahl (Konstante). Beispiele aus dem [http://youtu.be/cX5XLc9e_g4 Video]:
<p>
Es gibt eine Reihe unterschiedlicher Adressierungsmöglichkeiten. <cite id="5fa9783b5559e">Brinkschulte+et+al.+2010</cite> erläutern elf verschiedene Varianten, von denen auf den kommenden Seiten nur die Folgenden vorgestellt werden:
* <loop_index id="5fa9783b555a5">unmittelbare Adressierung|Adressierung, unmittelbar</loop_index>unmittelbare Adressierung
* <loop_index id="5fa9783b555ab">Registeradressierung|Adressierung, Register</loop_index>Registeradressierung
* <loop_index id="5fa9783b555b1">direkte Adressierung|Adressierung, direkt|absolute Adressierung|Adressierung, absolut</loop_index>direkte/absolute Adressierung
* <loop_index id="5fa9783b555b6">registerindirekte Adressierung</loop_index><loop_index id="5fa978949970d">Adressierung, registerindirekt</loop_index>registerindirekte Adressierung
* <loop_index id="5fa9783b555bc">indizierte Adressierung mit Verschiebung</loop_index><loop_index id="5fa9783b93bcc">Adressierung, indiziert mit Verschiebung</loop_index>indizierte Adressierung mit Verschiebung<br />
</p>


LOAD #2<br />
<br />
LOAD #5<br />


Man nennt dies die '''unmittelbare Adressierung''', da die Konstante unmittelbar im Befehl steht.
== Aufgabe 1 ==
 
<p>
==== Operand ist Speicheradresse ====
<loop_area type="task">
In diesem Fall steht die effektive Adresse direkt im Befehl. Beispiele aus dem [http://youtu.be/cX5XLc9e_g4 Video]:
<loop_task title="Adressierungsarten" id="5fa9783b555c1">
 
<p>
LOAD 13<br />
Informiere dich bei <cite id="5fa9783b555c7">Brinkschulte+et+al.+2010</cite> in Kapitel 2.1.6 (Adressierungsarten) über alle dort erläuterten Adressierungsarten.
ADD 14<br />
</p>
STORE 15<br />
<p>
 
<small>Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten [[Hinweise für Studierende#Downloadbare Bücher von Springerlink|über ihre Hochschulen von Springerlink zu beziehen.]]</small>
Man nennt dies die '''direkte Adressierung''' oder auch '''absolute Adressierung'''. (Monopoly-Spieler würden sagen: ''Gehe '''direkt''' zu dieser Adresse, denn es ist '''absolut''' die richtige Adresse!'')
</p>
 
</loop_task>
Es ergibt sich in der Praxis aber recht schnell ein Problem. In dem im [http://youtu.be/cX5XLc9e_g4 Video] gezeigten Beispiel stehen nur sechs Bit für die Codierung der angesprochenen Speicherzelle im Hauptspeicher zur Verfügung, insgesamt lassen sich damit also nur 2<sup>6</sup> = 64 Speicherzellen unterscheiden, viel zu wenig für die Speichergrößen in heutigen Rechnern. Selbst eine Erweiterung auf 12 oder 24 Bit pro Operand bringt noch keine Lösung des Problems.
 
=== Adressierungsarten ===
 
Es muss also noch weitere Adressierungsmöglichkeiten geben und in der Tat erläutert <cite>Brinkschulte+et.al.+2010</cite> allein elf verschiedene Varianten, von denen an dieser Stelle nur die Folgenden vorgestellt werden:
 
* unmittelbare Adressierung
* direkte/absolute Adressierung
* Registeradressierung
* registerindirekte Adressierung
* indizierte Adressierung mit Verschiebung
 
Auf die unmittelbare und die direkte/absolute Adressierung wurde bereits oben auf dieser Seite eingegangen.
 
==== Registeradressierung ====
 
Eine Registeradressierung liegt vor, wenn der Operand direkt ein Register der CPU bezeichnet. Diese Variante ist ebenfalls bereits aus dem [http://youtu.be/cX5XLc9e_g4 Video] bekannt, sie kommt dort aber nur "unsichtbar" vor.
 
Die im [http://youtu.be/cX5XLc9e_g4 Video] gezeigten (Einadress-) Befehle arbeiten auf dem Register Akkumulator. Somit liegt hier eine Registeradressierung vor. Unsichtbar ist sie deshalb, da kein Operand dafür zu sehen ist, es wird per Definition immer auf den Akkumulator zugegriffen.
 
In Aufgabe 1 auf der Seite [[Aufgaben & Co. zum Befehlsformat]] wird die Registeradressierung dann deutlich sichtbar. Der dort angegebene Befehl
 
ADD acc, acc, 14
 
spricht das Register Akkumulator als ersten Operanden und als Ziel für die Aufnahme des Additionsergebnisses an.
<loop_area type="notice">'''Hinweis'''<br />Wenn du die Aufgabe 1 auf der Seite [[Aufgaben & Co. zum Befehlsformat]] sinnvoll bearbeitet hast, dann hast du eine Reihe von weiteren Befehlen entwickelt, die ebenfalls die Registeradressierung verwenden.
</loop_area>
</loop_area>
 
</p>
Die '''registerindirekte Adressierung''' sowie die '''indizierte Adressierung mit Verschiebung''' werden auf den folgenden Seiten behandelt.<br />
<br />
<hr />
<sub>Diese Seite steht unter der [http://creativecommons.org/licenses/by/3.0/deed.de Creative Commons Namensnennung 3.0 Unported Lizenz] [http://creativecommons.org/licenses/by/3.0/deed.de http://i.creativecommons.org/l/by/3.0/80x15.png]
</sub>

Aktuelle Version vom 10. November 2020, 16:02 Uhr

Eine CPU kann verschiedene Adressierungsarten unterscheiden.


Definition: Adressierungsart

Definition

Unter einer Adressierungsart versteht man eine Möglichkeit, wie die CPU einen in einem Befehl angegebenen Operanden interpretiert.

Das Ziel bei der Interpretation eines Operanden während der Ausführung eines Befehls auf der CPU ist zunächst herauszufinden,

  • ob der Operand eine konkrete Zahl (Konstante) darstellt,
  • ob der Operand ein konkretes Register auf der CPU bezeichnet,
  • oder ob mit ihm die sogenannte effektive Adresse ermittelt werden kann.


Definition: Effektive Adresse

Definition

Unter der effektiven Adresse versteht man die tatsächliche Adresse einer Speicherzelle im Hauptspeicher. Man nennt diese auch die physikalische Adresse.


Verschiedene Adressierungsarten

Es gibt eine Reihe unterschiedlicher Adressierungsmöglichkeiten. Brinkschulte et al. 2010 erläutern elf verschiedene Varianten, von denen auf den kommenden Seiten nur die Folgenden vorgestellt werden:

  • unmittelbare Adressierung
  • Registeradressierung
  • direkte/absolute Adressierung
  • registerindirekte Adressierung
  • indizierte Adressierung mit Verschiebung


Aufgabe 1

Aufgabe

Informiere dich bei Brinkschulte et al. 2010 in Kapitel 2.1.6 (Adressierungsarten) über alle dort erläuterten Adressierungsarten.

Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten über ihre Hochschulen von Springerlink zu beziehen.