![Page 1: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/1.jpg)
Laden und Speichern
• Konstanten-Lade-Befehle legen einen neuen Wert oben auf demStack ab.
• LOAD i legt dagegen den Wert aus der i-ten Zelle oben auf demStack ab.
• STORE i speichert den obersten Wert in der i-ten Zelle ab.260
![Page 2: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/2.jpg)
42
PC PC
CONST 42
261
![Page 3: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/3.jpg)
PC PC
ttTRUE
262
![Page 4: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/4.jpg)
i 21
21
i 21PC PC
LOAD i
263
![Page 5: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/5.jpg)
i
21
iPC PC
21
STORE i
264
![Page 6: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/6.jpg)
Sprünge
• Sprünge verändern die Reihenfolge, in der die Befehleabgearbeitet werden, indem sie den PC modifizieren.
• Ein unbedingter Sprung überschreibt einfach den alten Wertdes PC mit einem neuen.
• Ein bedingter Sprung tut dies nur, sofern eine geeigneteBedingung erfüllt ist.
265
![Page 7: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/7.jpg)
PC PC
17
JUMP 17
266
![Page 8: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/8.jpg)
PC PC
tt FJUMP 17
267
![Page 9: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/9.jpg)
PC PC
ff
17
FJUMP 17
268
![Page 10: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/10.jpg)
Allokierung von Speicherplatz
• Wir beabsichtigen, jeder Variablen unseresMiniJava-Programms eine Speicher-Zelle zuzuordnen.
• Um Platz für i Variablen zu schaffen, muss der SP einfach um ierhöht werden.
• Das ist die Aufgabe von ALLOC i.269
![Page 11: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/11.jpg)
PC PC
ALLOC 3
270
![Page 12: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/12.jpg)
Ein Beispiel-Programm:
CONST 17CONST 4ADDCONST 2MULWRITEHALT271
![Page 13: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/13.jpg)
0123456 0
PC
CONST 17CONST 2ADDCONST 4HALTWRITEMUL
272
![Page 14: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/14.jpg)
0123456 17
PC
1
CONST 17CONST 2ADDCONST 4HALTWRITEMUL
273
![Page 15: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/15.jpg)
0123456 17
PC42
CONST 17CONST 2ADDCONST 4HALTWRITEMUL
274
![Page 16: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/16.jpg)
0123456
PC
321
CONST 17CONST 2ADDCONST 4HALTWRITEMUL
275
![Page 17: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/17.jpg)
0123456
PC
4221
CONST 17CONST 2ADDCONST 4HALTWRITEMUL
276
![Page 18: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/18.jpg)
0123456
PC
42 5
CONST 17CONST 2ADDCONST 4HALTWRITEMUL
277
![Page 19: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/19.jpg)
0123456
PC
6
CONST 17CONST 2ADDCONST 4HALTWRITEMUL
278
![Page 20: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/20.jpg)
Ausführung eines JVM-Programms:
PC = 0;IR = Code[PC℄;while (IR != HALT) {PC = PC + 1;exe ute(IR);IR = Code[PC℄;}• IR = Instruction Register, d.h. eine Variable, die dennächsten auszuführenden Befehl enthält.
• exe ute(IR) führt den Befehl in IR aus.• Code[PC℄ liefert den Befehl, der in der Zelle in Code steht, aufdie PC zeigt.
279
![Page 21: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/21.jpg)
9.1 Übersetzung von Deklarationen
Betrachte Deklarationint x, y, result;Idee:Wir reservieren der Reihe nach für die Variablen Zellen im Speicher:
xyresult==⇒
Übersetzung von int x0, . . . , xn−1; = ALLOC n280
![Page 22: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/22.jpg)
9.1 Übersetzung von Deklarationen
Betrachte Deklarationint x, y, result;Idee:Wir reservieren der Reihe nach für die Variablen Zellen im Speicher:
xyresult==⇒
Übersetzung von int x0, . . . , xn−1; = ALLOC n281
![Page 23: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/23.jpg)
9.2 Übersetzung von Ausdrücken
Idee:Übersetze Ausdruck expr in eine Folge von Befehlen, die den Wertvon expr berechnet und dann oben auf dem Stack ablegt.
282
![Page 24: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/24.jpg)
9.2 Übersetzung von Ausdrücken
Idee:Übersetze Ausdruck expr in eine Folge von Befehlen, die den Wertvon expr berechnet und dann oben auf dem Stack ablegt.
Übersetzung von x = LOAD i — x die i-te VariableÜbersetzung von 17 = CONST 17Übersetzung von x - 1 = LOAD iCONST 1SUB
283
![Page 25: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/25.jpg)
i -9 PC
LOAD iCONST 1SUB
284
![Page 26: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/26.jpg)
i -9 PC
-9
LOAD iCONST 1SUB
285
![Page 27: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/27.jpg)
i -9
-9
PC
1
LOAD iCONST 1SUB
286
![Page 28: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/28.jpg)
i -9 PC
-10
LOAD iCONST 1SUB
287
![Page 29: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/29.jpg)
Allgemein:
Übersetzung von - expr = Übersetzung von exprNEGÜbersetzung von expr1 + expr2 = Übersetzung von expr1
Übersetzung von expr2ADD... analog für die anderen Operatoren ...
288
![Page 30: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/30.jpg)
Beispiel:
Sei expr der Ausdruck: (x + 7) * (y - 14)wobei x und y die 0. bzw. 1. Variable sind.Dann liefert die Übersetzung:
LOAD 0CONST 7ADDLOAD 1CONST 14SUBMUL289
![Page 31: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/31.jpg)
9.3 Übersetzung von Zuweisungen
Idee:• Übersetze den Ausdruck auf der rechten Seite.Das liefert eine Befehlsfolge, die den Wert der rechten Seiteoben auf dem Stack ablegt.
• Speichere nun diesen Wert in der Zelle für die linke Seite ab!
Sei x die Variable Nr. i. Dann istÜbersetzung von x = expr; = Übersetzung von exprSTORE i
290
![Page 32: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/32.jpg)
9.4 Übersetzung von Zuweisungen
Idee:• Übersetze den Ausdruck auf der rechten Seite.Das liefert eine Befehlsfolge, die den Wert der rechten Seiteoben auf dem Stack ablegt.
• Speichere nun diesen Wert in der Zelle für die linke Seite ab!
Sei x die Variable Nr. i. Dann istÜbersetzung von x = expr; = Übersetzung von exprSTORE i
291
![Page 33: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/33.jpg)
Beispiel:
Für x = x + 1; (x die 2. Variable) liefert das:LOAD 2CONST 1ADDSTORE 2
292
![Page 34: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/34.jpg)
-92 PC
CONST 1ADDSTORE 2LOAD 2
293
![Page 35: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/35.jpg)
-92 PC
-9
CONST 1ADDSTORE 2LOAD 2
294
![Page 36: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/36.jpg)
-92 PC
-91
CONST 1ADDSTORE 2LOAD 2
295
![Page 37: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/37.jpg)
-92 PC
-8
CONST 1ADDSTORE 2LOAD 2
296
![Page 38: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/38.jpg)
2 -8 PC
CONST 1ADDSTORE 2LOAD 2
297
![Page 39: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/39.jpg)
Bei der Übersetzung von x = read(); und write(expr);gehen wir analog vor :-)
Sei x die Variable Nr. i. Dann istÜbersetzung von x = read(); = READSTORE iÜbersetzung von write( expr); = Übersetzung von exprWRITE
298
![Page 40: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/40.jpg)
9.5 Übersetzung von if-StatementsBezeichne stmt das if-Statementif ( cond ) stmt1 else stmt2Idee:
• Wir erzeugen erst einmal Befehlsfolgen für cond, stmt1 undstmt2.
• Diese ordnen wir hinter einander an.
• Dann fügen wir Sprünge so ein, dass in Abhängigkeit desErgebnisses der Auswertung der Bedingung jeweils entwedernur stmt1 oder nur stmt2 ausgeführt wird.
299
![Page 41: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/41.jpg)
Folglich (mit A, B zwei neuen Marken):Übersetzung von stmt = Übersetzung von condFJUMP A
Übersetzung von stmt1JUMP BA: Übersetzung von stmt2B: ...• Marke Amarkiert den Beginn des else-Teils.• Marke Bmarkiert den ersten Befehl hinter dem if-Statement.• Falls die Bedingung sich zu false evaluiert, wird der then-Teilübersprungen (mithilfe von FJUMP A).
• Nach Abarbeitung des then-Teils muss in jedem Fall hinterdem gesamten if-Statement fortgefahren werden. Dazu dientJUMP B.
300
![Page 42: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/42.jpg)
Beispiel:
Für das Statement:if (x < y) y = y - x;else x = x - y;(x und y die 0. bzw. 1. Variable) ergibt das:
LOAD 0LOAD 1LESSFJUMP ALOAD 1LOAD 0SUBSTORE 1JUMP B
A: LOAD 0LOAD 1SUBSTORE 0B: ...301
![Page 43: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/43.jpg)
126 PC
FJUMP ALOAD 0LOAD 1LESS
SUBLOAD 0LOAD 1STORE 0A:B:
302
![Page 44: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/44.jpg)
PC
126
12
FJUMP ALOAD 0LOAD 1LESS
SUBLOAD 0LOAD 1STORE 0A:B:
303
![Page 45: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/45.jpg)
PC
126
126
FJUMP ALOAD 0LOAD 1LESS
SUBLOAD 0LOAD 1STORE 0A:B:
304
![Page 46: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/46.jpg)
PC
126
ff
FJUMP ALOAD 0LOAD 1LESS
SUBLOAD 0LOAD 1STORE 0A:B:
305
![Page 47: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/47.jpg)
126 PC
A
FJUMP ALOAD 0LOAD 1LESS
SUBLOAD 0LOAD 1STORE 0A:B:
306
![Page 48: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/48.jpg)
126 PC
12
FJUMP ALOAD 0LOAD 1LESS
SUBLOAD 0LOAD 1STORE 0A:B:
307
![Page 49: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/49.jpg)
126 PC
126
FJUMP ALOAD 0LOAD 1LESS
SUBLOAD 0LOAD 1STORE 0A:B:
308
![Page 50: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/50.jpg)
126 PC
6
FJUMP ALOAD 0LOAD 1LESS
SUBLOAD 0LOAD 1STORE 0A:B:
309
![Page 51: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/51.jpg)
6 PC
6
FJUMP ALOAD 0LOAD 1LESS
SUBLOAD 0LOAD 1STORE 0A:B:
310
![Page 52: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/52.jpg)
9.6 Übersetzung von while-StatementsBezeichne stmt das while-Statementwhile ( cond ) stmt1Idee:
• Wir erzeugen erst einmal Befehlsfolgen für cond und stmt1.
• Diese ordnen wir hinter einander an.
• Dann fügen wir Sprünge so ein, dass in Abhängigkeit desErgebnisses der Auswertung der Bedingung entweder hinterdas while-Statement gesprungen wird oder stmt1 ausgeführtwird.
• Nach Ausführung von stmt1 müssen wir allerdings wieder anden Anfang des Codes zurückspringen :-)
311
![Page 53: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/53.jpg)
Folglich (mit A, B zwei neuen Marken):Übersetzung von stmt = A: Übersetzung von condFJUMP B
Übersetzung von stmt1JUMP AB: ...• Marke Amarkiert den Beginn des while-Statements.• Marke Bmarkiert den ersten Befehl hinter demwhile-Statement.• Falls die Bedingung sich zu false evaluiert, wird die Schleifeverlassen (mithilfe von FJUMP B).
• Nach Abarbeitung des Rumpfs muss das while-Statementerneut ausgeführt werden. Dazu dient JUMP A.
312
![Page 54: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/54.jpg)
Beispiel:
Für das Statement:while (1 < x) x = x - 1;(x die 0. Variable) ergibt das:
A: CONST 1LOAD 0LESSFJUMP BLOAD 0CONST 1SUBSTORE 0JUMP AB: ...
313
![Page 55: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/55.jpg)
9.7 Übersetzung von Statement-Folgen
Idee:• Wir erzeugen zuerst Befehlsfolgen für die einzelnen Statementsin der Folge.
• Dann konkatenieren wir diese.
Folglich:
Übersetzung von stmt1 ... stmtk = Übersetzung von stmt1
...
Übersetzung von stmtk
314
![Page 56: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/56.jpg)
9.8 Übersetzung von Statement-Folgen
Idee:• Wir erzeugen zuerst Befehlsfolgen für die einzelnen Statementsin der Folge.
• Dann konkatenieren wir diese.
Folglich:
Übersetzung von stmt1 ... stmtk = Übersetzung von stmt1
...
Übersetzung von stmtk
315
![Page 57: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/57.jpg)
Beispiel:
Für die Statement-Folgey = y * x;x = x - 1;(x und y die 0. bzw. 1. Variable) ergibt das:
LOAD 1LOAD 0MULSTORE 1LOAD 0CONST 1SUBSTORE 0
316
![Page 58: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/58.jpg)
9.9 Übersetzung ganzer Programme
Nehmen wir an, das Programm prog bestehe aus einer Deklarationvon n Variablen, gefolgt von der Statement-Folge ss.
Idee:• Zuerst allokieren wir Platz für die deklarierten Variablen.
• Dann kommt der Code für ss.
• Dann HALT.Folglich:
Übersetzung von prog = ALLOC nÜbersetzung von ssHALT317
![Page 59: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/59.jpg)
9.9 Übersetzung ganzer Programme
Nehmen wir an, das Programm prog bestehe aus einer Deklarationvon n Variablen, gefolgt von der Statement-Folge ss.
Idee:• Zuerst allokieren wir Platz für die deklarierten Variablen.
• Dann kommt der Code für ss.
• Dann HALT.Folglich:
Übersetzung von prog = ALLOC nÜbersetzung von ssHALT318
![Page 60: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/60.jpg)
Beispiel:
Für das Programmint x, y;x = read();y = 1;while (1 < x) {y = y * x;x = x - 1;}write(y);ergibt das (x und y die 0. bzw. 1. Variable) :
319
![Page 61: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/61.jpg)
ALLOC 2READSTORE 0CONST 1STORE 1A: CONST 1LOAD 0LESSFJUMP B
LOAD 1LOAD 0MULSTORE 1LOAD 0CONST 1SUBSTORE 0JUMP A
B: LOAD 1WRITEHALT
320
![Page 62: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/62.jpg)
PC
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT321
![Page 63: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/63.jpg)
PC
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT322
![Page 64: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/64.jpg)
PC2
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT323
![Page 65: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/65.jpg)
PC
2
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT324
![Page 66: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/66.jpg)
PC
2
1
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT325
![Page 67: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/67.jpg)
PC
21
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT326
![Page 68: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/68.jpg)
PC
211
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT327
![Page 69: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/69.jpg)
PC
2112
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT328
![Page 70: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/70.jpg)
PC
21tt
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT329
![Page 71: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/71.jpg)
PC
21
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT330
![Page 72: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/72.jpg)
PC21
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT331
![Page 73: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/73.jpg)
PC21
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT332
![Page 74: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/74.jpg)
PC21
1
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT333
![Page 75: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/75.jpg)
PC21
11
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT334
![Page 76: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/76.jpg)
PC21
ff
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT335
![Page 77: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/77.jpg)
PC21
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT336
![Page 78: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/78.jpg)
PC21
2
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT337
![Page 79: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/79.jpg)
PC21
STORE 0ALLOC 2READA: LESSFJUMP B
JUMP A
CONST 1LOAD 0CONST 1STORE 1
LOAD 1B: WRITEHALT338
![Page 80: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/80.jpg)
Bemerkungen:
• Die Übersetzungsfunktion, die für ein MiniJava-ProgrammJVM-Code erzeugt, arbeitet rekursiv auf der Struktur desProgramms.
• Im Prinzip lässt sie sich zu einer Übersetzungsfunktion vonganz Java erweitern.
• Zu lösende Übersetzungs-Probleme:
• mehr Datentypen;
• Prozeduren;
• Klassen und Objekte.
↑Compilerbau
339
![Page 81: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/81.jpg)
10 Klassen und Objekte
Datentyp = Spezifikation von Datenstrukturen
Klasse = Datentyp + Operationen
Objekt = konkrete Datenstruktur
340
![Page 82: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/82.jpg)
Beispiel: Rationale Zahlen
• Eine rationale Zahl q ∈ Q hat die Form q =xy , wobei x, y ∈ Z.
• x und y heißen Zähler und Nenner von q.
• Ein Objekt vom Typ Rational sollte deshalb als Komponentenint-Variablen zaehler und nenner enthalten:zaehlernenner
Objekt:
• Die Daten-Komponenten eines Objekts heißen Objekt-Attriuteoder (kurz) Attribute.
341
![Page 83: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/83.jpg)
• Rational name ; deklariert eine Variable für Objekte derKlasse Rational.
• Das Kommando new Rational(...) legt das Objekt an, rufteinen Konstruktor für dieses Objekt auf und liefert das neueObjekt zurück:
34
zaehlernenner
aa = new Rational (3,4);a
• Der Konstruktor ist eine Prozedur, die die Attribute des neuenObjekts initialisieren kann.
342
![Page 84: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/84.jpg)
• Der Wert einer Rational-Variable ist ein Verweis auf einenSpeicherbereich.
• Rational b = a; kopiert den Verweis aus a in die Variable b:34
zaehlernenner
34
zaehlernenner
a
a
b
Rational b = a;
343
![Page 85: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/85.jpg)
• a.zaehler liefert den Wert des Attributs zaehler des Objekts a:34
zaehlernenner
34
zaehlernenner
3
a
a
int b = a.zaehler;
b
344
![Page 86: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/86.jpg)
• a.add(b) ruft die Operation add für amit dem zusätzlichenaktuellen Parameter b auf:
28
34
−12
zaehlernenner
zaehlernenner
34
−12
zaehlernenner
zaehlernenner
zaehlernenner
c
Rational = a.add(b); ab
a
b
345
![Page 87: Laden und Speichern - in.tum.deseidl/Courses/WS2007/i8.pdf · tt TRUE 262. i 21 21 i 21 PC PC LO AD i 263. i 21 i PC PC 21 STORE i 264. Sprünge • Sprünge verändern die Reihenfolge,](https://reader035.vdokument.com/reader035/viewer/2022070617/5d5605c288c993b51c8bd335/html5/thumbnails/87.jpg)
28
34
−12
zaehlernenner
zaehlernenner
34
−12
zaehlernenner
zaehlernenner
zaehlernenner
a
b
a = a.add(b);b
a
• Die Operationen auf Objekten einer Klasse heißen auchMethoden, genauer: Objekt-Methoden.
346