BuK/IIm20/Vorlesung 10 Grüning
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>FLACI_c3040gfy2wykcr</language> = Kreativaufgabe LoopGotoWhile-Compiler Seite 48 = Loop: - Wobei dabei das "LOOP xz" nur mit "WHILE xz != 0" erstetzt wird. Das ergibt validen WHILE-Code, jdeoch wird die Semantik höchst wahrscheinlich verfälscht. <run id="60cb92095735f"> x0 := x4 + 1; LOOP x2 DO x0 := x4 + 1 END; x0 := x4 + 1; LOOP x2 DO LOOP x2 DO x0 := x4 + 1 END END </run> While: - $\neq$ wird als "!=" dargestellt <run id="60cb9209573ba"> x0 := x4 + 1 ; WHILE x2 != 0 DO x0 := x4 + 1 END ; x0 := x4 + 1 ; WHILE x2 != 0 DO x0 := x4 + 4; WHILE x2 != 0 DO x0 := x4 + 1 END END </run> Goto: - Um geparst zu werden muss auf jeder Zeile des GOTO-Programms eine Marke stehen. - GOTO-Programm muss in der Form: $M1: A1; M2: A2; ... ; Mk: Ak$ vorliegen um semantisch richtig kompiliert zu werden. - xz = c wird aktuell mit xz - c != 0 übersetzt was inhaltlich nicht stimmt. Das richtige Vergleichen ist jedoch sehr umfangreich. - Neue Hilfsvariablen müssten noch dynamisch ermittelt werden und nicht fest immer wieder zum Einsatz kommen: - x90 = Nullregister - x100 = große WHILE-Schleife - x101 = if mit LOOP - x102 = Hilfe für While-Simulation von LOOP - $xz > k$ müsste noch implementiert werden. [[Bild:GotoToWhile.png]] <run id="60cb9175a56e0"> M1: IF x1 = 0 THEN GOTO M2; M3: x0 := x0 + 0; M2: GOTO M1; M4: x0 := x0 + 1 </run>