Wiederholungen

Einbettung von Bedingung und Anweisungsfolge

Wir betrachten Wiederholungen der Form:

while [bed]:
    [anw]
end#

Mit bed wird hier die Bedingung beschrieben, mit anw die Anweisungssequenz des Schleifenkörpers.

Wir setzen voraus, dass bereits Assembler-Code für die Bedingung und für die Anweisungssequenz vorliegen. Mit c_bed wird der Assembler-Code für die Bedingung beschrieben, mit c_anw der Assembler-Code für die Anweisungssequenz.

Bei der Übersetzung einer Wiederholung werden jetzt die bereits existierenden Code-Schnipsel benutzt, um das Code-Schnipsel für die gesamte Wiederholungsanweisung zu erzeigen.

# c_while
# benutzt: c_bed, c_anw
# Hilfsvariable: h
# Code für die Bedingung; Ergebnis in Hilfsvariable h
c_bed
# Ergebnis testen
tst h
jmp (+2)
jmp (+(Länge(c_anw)+2)) # über den anw-Code
c_anw_true
jmp (-(Länge(c_anw)+Länge(c_bed)+3)) # zurück zum bed-Code
# h = 0
tst h
jmp (+2)
jmp (+3)
dec h
jmp (-4)

Teste das Code-Schnipsel.

X

Fehler melden

X

Suche