FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Technische Informatik

T3 Blatt 2 Aufgabe 2.2

T3 Blatt 2 Aufgabe 2.2 2003-11-03 09:44
Antje
Hallo!

http://tech-www.informatik.uni-hamburg.de/lehre/ws2003/vorlesungen/t3/aufgaben/Aufgabenblatt_02.pdf

Hab ein kleines Problem mit Aufgabe 2…
angenommen ich hab eine 3-Adress-Maschine, bedeutet das automatisch, dass diese nur Speicheradressen verwendet und keine Register??? Finde die Aufgabenstellung doch etwas verwirrend…
Worin unterscheiden sich denn Register und Speicheradressen?
Gehe ich Recht in der Annahme, dass der Akkumulator ein Register ist?
Angenommen ich hab einen Befehl, wie zum Beispiel add X,Y,Z ist dann vielleicht nur X eine Speicheradresse und y, Z Register?
Na vielelicht kann mir ja jemand Auskunft geben…

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-03 09:57
UncleOwen
Angenommen ich hab einen Befehl, wie zum Beispiel add X,Y,Z ist dann vielleicht nur X eine Speicheradresse und y, Z Register?

Stell Dir vor, Du hast 8 add-Befehle. Einer hat 3 Register als Parameter, einer 3 Speicheradressen, und die anderen 6 jeweils von jedem etwas. Die haben alle den gleichen Namen, da sie ja anhand der Parameter unterscheidbar sind. (aber unterschiedliche Opcodes, und sind auch unterschiedlich lang - was fuer Aufgabe 2.2.2 interessant wird)

Gehe ich Recht in der Annahme, dass der Akkumulator ein Register ist?

Die 3-Adress-Maschine hat doch gar keinen Akkumulator. Den hat nur die 1-Adress-Maschine, und da ist der Akku sozusagen das einzige Register.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-03 10:33
Antje
Na also die Frage zum Akkumulator war natürlich auf die 1-Adressmaschine bezogen…sorry hab die Fragen wohl etwas kreuz und quer formuliert…so ungefähr schaut mein Hirn auch aus *lol*

Heißt das ich soll die 2- und 3 Adressmaschine einmal mit Registern und einmal mit Speicheradressen kodieren??? *völligverwirrtbin*

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-03 10:39
UncleOwen
Da bin ich mir jetzt nicht sicher, ob ich die Frage richtig verstanden hab:

Du sollst versuchen, moeglichst oft mit Registern zu arbeiten - aber das geht halt nicht immer, da die Daten am Anfang im Speicher liegen, und auch am Ende wieder da hin sollen.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-03 12:29
TriPhoenix
Heißt das ich soll die 2- und 3 Adressmaschine einmal mit Registern und einmal mit Speicheradressen kodieren??? *völligverwirrtbin*

Nein, du hast die Moeglichkeit, sowohl Adressen als auch Register zu nutzen, und zwar gemischt. Du kannst also wenn A, B und C Speicheradressen sind und R0, R1, R2 Register, all diese Varianten machen:
add R1, A, R2
sub A, B, C
add R0, R1, R2
etc.

Das Problem ist nur, dass in Aufgabe 2.2.2 steht, dass eine Speicheradresse 16 Bit lang ist, waehrend eine Registeradresse nur 4 Bit lang ist. Wenn du also Register benutzt bekommst du schoene kurze Befehle, waehrend die Speicheradressen lang sind. Deswegen sollte man moeglichst wenig mit den Speicheradressen machen, wenn sie dadurch mehr als einmal vorkommen.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-03 13:57
Fred
du hast die Moeglichkeit, sowohl Adressen als auch Register zu nutzen, und zwar gemischt.
Wobei das total realitätsfremd ist.
Worin unterscheiden sich denn Register und Speicheradressen?
Register sind in die CPU integriert und sehr schnell, es gibt aber nur sehr wenige (in diesem Fall 16 Stueck), dafür brauchst Du nur 4 Bit, um sie zu "adressieren". Speicher liegt ausserhalb der CPU, er ist langsam, dafür gibts Millionen von Wörtern, aber man braucht auch mehr Bits, um sie zu adressieren (hier 16, "normal" sind heutzutage 32).

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-03 16:30
Anonymer User
also ich habe immer noch nicht Verstanden was Register und was Speicheradresse ist.
Kann jamand zb a=B+C machen und schreiben was genau ein Register und Speicheradresse ist
Bitte Bitte

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-03 21:54
Wulf
Welchen Zweck hat bei der 3 Adress Maschine der MOV Befehl?

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-03 21:58
Wulf
also ich habe immer noch nicht Verstanden was Register und was Speicheradresse ist.
Kann jamand zb a=B+C machen und schreiben was genau ein Register und Speicheradresse ist
Bitte Bitte

Register schreibst du als R0 .. R15, Speicheradressen als A .. Z

Register sind in die CPU integriert und sehr schnell, es gibt aber nur sehr wenige (in diesem Fall 16 Stueck), dafür brauchst Du nur 4 Bit, um sie zu "adressieren". Speicher liegt ausserhalb der CPU, er ist langsam, dafür gibts Millionen von Wörtern, aber man braucht auch mehr Bits, um sie zu adressieren (hier 16, "normal" sind heutzutage 32).

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-03 22:03
UncleOwen
Welchen Zweck hat bei der 3 Adress Maschine der MOV Befehl?

Bei so simplen Beispielen vermute ich mal keinen… Interessant wirds, wenn man Zwischenergebnisse fuer 'ne andere Rechnung nochmal braucht.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 12:14
LAMER
Register schreibst du als R0 .. R15, Speicheradressen als A .. Z

Schön das habe ich auch verstanden. Ich kann dann jede Buchstabe von anfang an in register speichern,und nur mit Registern arbeiten.
w=(a+b*c)/(d-e*f)
W ist Register??? ABcdef sind Speicheradressen?
In einigen Fällen muss man noch Hilfsregister benutzen.
Z.B 2. MOV W,D W-register, D-speicheradresse ?
3. MUL W,d,W beide Ws sind Register oder nur der ertse?

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 12:30
Anonymer User
w=(a+b*c)/(d-e*f)
W ist Register??? ABcdef sind Speicheradressen?
Alle Eingaben (abcdef) sowie die Ausgabe (w) sind Speicheradressen.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 12:31
TriPhoenix
Schön das habe ich auch verstanden. Ich kann dann jede Buchstabe von anfang an in register speichern,und nur mit Registern arbeiten.
Genau.

w=(a+b*c)/(d-e*f)
W ist Register??? ABcdef sind Speicheradressen?
W ist auch eine Speicheradresse, sonst würde da R0 oder so stehen [img]http://www.fb18.de/gfx/28.gif[/img]

In einigen Fällen muss man noch Hilfsregister benutzen.
Z.B 2. MOV W,D W-register, D-speicheradresse ?
Das wäre eine Speicher->SPeicher-Transaktion

3. MUL W,d,W beide Ws sind Register oder nur der ertse?
Beide Ws sind Register. Auf jeden Fall bezeichnet auch W immer dasselbe, nciht einmal dies und einmal das [img]http://www.fb18.de/gfx/22.gif[/img]

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 12:42
LAMER
in Zweiadressmaschiene kann man Hilfsregister benutzen,also müssen w und t Register sein.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 13:23
TriPhoenix
in Zweiadressmaschiene kann man Hilfsregister benutzen,also müssen w und t Register sein.

Wer ist T? Und warum muss dann W ein Register sein? Alle Buchstaben bezeichnen Speicheradressen, also ist W kein Register. Die Register heißen R0…R15.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 14:10
LAMER
Digitalschaltungen
toll, dann hat man im script extra keine Register benutzt, wocher soll ich jetuzt wissen wie ich Register einsetze.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 14:17
LAMER
ausserdem, wieviel bit verbraucht akku?
also die Aufgabe ist echt blöd. Ihr spricht von r0 usw Registern wobei das nirgendwo steht. auch in Beispielen im script nicht

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 15:43
UncleOwen
toll, dann hat man im script extra keine Register benutzt, wocher soll ich jetuzt wissen wie ich Register einsetze.

In der Aufgabe: genauso wie den Speicher.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 15:44
UncleOwen
ausserdem, wieviel bit verbraucht akku?

Gar keine, da der Akku immer (implizit) benutzt wird.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 15:45
UncleOwen
also die Aufgabe ist echt blöd. Ihr spricht von r0 usw Registern wobei das nirgendwo steht. auch in Beispielen im script nicht

Theoretisch kann man sich die Namen der Register auch ausdenken - nur bei R0 bis R15 kann sich eigentlich jeder denken, dass das Register sein sollen, ansonsten muesste mans noch dazuschreiben.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 16:09
LAMER
s=(a+b)*c
2Adressm.
mov R0,a
add R0,b
mul R0,c
mov s,R0
benutzt 4 Register und 4 SpAdressen Richtig???
3Adrssm.
mov R0,a
add R1,R0,b
mul R2,R1,c
mov s,R2
benutzt 6 Register 4 SpAdressen Richtig???
Man kann die Variablen s,a,b,c schon am Anfang in Registern speicher,und dann nur mit diesen Registern die Operationen ausführen. Richtig???
zB Für 3Adrssm.
mov R0,a
mov R1,b
mov R2,c
add R3,R0,R1
mul R4,R3,R2
mov s,R4
So kann man das auch machen,aber man hat dann 4 Register mehr. Richtig???

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 16:12
UncleOwen
Ich wuerd sagen, Du hast die Aufgabe verstanden. [img]http://www.fb18.de/gfx/14.gif[/img]

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 16:59
Dosenwein
Muss ich denn für diese Aufgabe unbedingt Register verwenden?

Ich habe das jetzt wie bei dem Beispiel aus dem Skript gemacht, und immer direkt mit Speicheradressen gearbeitet.
Der einzige Unterschied dürfte doch sein, das das Programm etwas länger ist (da ich ja statt 4bit Registern jetzt 16bit Speicheradressen benutze), und die Rechenzeit etwas länger ist.

Aber es steht ja nicht in der Aufagbe ein möglichst kurzes und schnelles Programm zu schreiben, oder?

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 17:09
UncleOwen
Naja, dann wird der Vergleich im zweiten Teil der Aufgabe irgendwie sinnlos.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 17:13
Dosenwein
Das stimmt schon. Aber es steht nicht explizit in der Aufgabenstellung, das ich die Programme so speichersparend wie möglich schreiben soll.

Sonst muss ich den ganzen Kram nochmal machen… [img]http://www.fb18.de/gfx/20.gif[/img]

Ich hoffe mal das die das so auch akzeptieren werden.

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 17:16
UncleOwen
Aber es steht nicht explizit in der Aufgabenstellung,

Waere bei TAMS ja auch mal was neues [img]http://www.fb18.de/gfx/15.gif[/img]

Re: T3 Blatt 2 Aufgabe 2.2 2003-11-04 17:18
Dosenwein
Da hast du wohl recht [img]http://www.fb18.de/gfx/24.gif[/img]