Rechnerarchitektur (Adressregister): Was ist mit "Operanden" gemeint?

Jack159

Lieutenant
Registriert
Dez. 2011
Beiträge
766
Ich lese mich gerade in diverse Bereiche der Rechnerarchitektur ein und dabei fällt öfters der Begriff "Operanden".

Beispiel:

Adressregister:
Die Adressregister spielen eine wichtige Rolle in der Adressarithmetik. Adressregister werden für die Berechnung von Speicheradressen eines Operanden oder Befehls genutzt.


Quelle:
http://de.wikipedia.org/wiki/Register_(Computer)#Adressregister


Ich habe jetzt zwar mal "Operand" gegoogelt und bin dann auf folgenden Wikipediaartikel gestoßen:

http://de.wikipedia.org/wiki/Operand

Das Problem ist, dass ich jetzt nicht weiß, welcher dieser Operanden im Zusammenhang mit dem Adressregister hier gemeint ist von den 3 Varianten.
 
Hier stand vermutlich Mist :)
 
NOEXCUSEhat das völlig richtig in Erinnerung. Um das ganze zu verdeutliche: zieh ich ein Beispiel aus der Mathematik heran:
1+1
Bei den beide Einsen handelt es sich um die Operanden. Das Plus ist der Operator welcher festlegt welche Operation auf den Operanden durchgeführt werden soll.
 
Für den Maschinenbefehl "ADD EAX, EBX". sind EAX und EBX die Operanden. Diese können aber auch eine Speicherzelle sein: "ADD EAX,[EBX]"
 
Die Aussage "Adressregister werden für die Berechnung..." ist ab dieser Stelle falsch. Adressen zeigen byteweise auf Speicherbereich, deren Inhalt können als Befehl oder Daten interpretiert werden. Die Adressregister der Speichercontroller beinhalten diese lediglich, "berechnet" ist da etwas übertrieben. Wenn in einem Byte das Äquivalent für "ADD" steht, kann der Befehl mindestens 1 Operand benötigen. Operanden als Daten müssen zuvor in passende Register der CPU geladen werden.

Von den Wikivarianten ist also die mathematische Variante gemeint.

ASM-Beispiel:

ADD A,B

Befehl: ADD
Operand1: Inhalt von Register A
Operand2: Inhalt von Register B
A+B landet üblicherweise in A, bei Übertrag wird in einem anderen Register meistens 1 spezifisches Bit als sog. "Flag" gesetzt, was man danach auswerten könnte...
 
Adressregister werden verwendet um für eine Operation (je nach Assemblerbefehl z.b. add,sub etc.) einen oder mehrere Operanten zu erzeugen. Im einfachsten Fall ist er Inhalt des Adressregisters der Operand (Direkt) z.b. move.l a0,d0 (d0 = a0).

Der Operand kann aber auch der Inhalt einer Speicheradresse sein (Indirekt), z.b. move.l (a0),d0 (d0 = memory[a0]). Der Operand wird bevor er zur „move“ Funktion kommt, erst erzeugt, also wenn memory[a0] z.B. 1234 ist kommt an die ALU eigentlich ein move 1234,d0.

Der 68020 z.B. hat eine sehr komplexe Adressarithmetik, dort wird auch eine Adressregister für eine Adressearithmetik benötigt und es wird eben schon etwas berechnet. Im Anhang ist die Generierung von einer EA (in dem Sinn der Operand für die ALU) im Modus „Memory Indirect Postindexed Mode“.

indirectpostindexd.png
 
Zurück
Oben