Herunterladen Inhalt Inhalt Diese Seite drucken
Inhaltsverzeichnis

Werbung

6.5.5 Schleifen

Mit Listensprüngen (siehe
Sprüngen (siehe
Seite
236) kann zwar eine beliebige
Anzahl von Listenbefehlen unbegrenzt oder extern
gesteuert wiederholt werden, jedoch ist damit eine
genaue Festlegung der Anzahl der Wiederholungen
nicht sicher möglich. Dies kann jedoch mit dem
Befehlspaar
list_repeat
und
werden. Die Befehlsfolge zwischen diesen beiden
kurzen Listenbefehlen wird exakt so oft ausgeführt,
wie mit
list_until
als Parameter angegeben ist,
mindestens jedoch einmal. Dabei sind bis zu 8
verschachtelte Schleifen erlaubt.
Die Befehle
list_repeat
und
paarweise verwendet werden. Ungepaarte bzw.
überzählige Befehle
(list_until
list_repeat
sowie list_repeat-Anweisungen, die zu
einer Verschachtelungstiefe über 8 führen würden)
werden ggf. ignoriert. Leere Schleifen, also ein
list_repeat
unmittelbar gefolgt von einem list_until,
werden sofort beendet und nicht wiederholt.
Die Befehlspaare können sich sowohl innerhalb von
Listen als auch innerhalb von Unterprogrammen
befinden.
Innerhalb von Unterprogrammen führt
list_jump_rel
zur Adresse unmittelbar nach dem
zugehörigen
list_repeat
aus. Über Unterprogramm-
grenzen hinweg funktionieren Schleifen nicht, da
Listensprünge in ein Unterprogramm hinein oder aus
einem Unterprogramm heraus nicht zulässig sind
(siehe
Seite
88).
Innerhalb von Listen führt
list_jump_pos
(zur Adresse unmittelbar nach dem
zugehörigen list_repeat) aus. Dadurch können sich
list_repeat
und
list_until
auch in zwei verschiedenen
Listen befinden, sofern der Listenwechsel dazwischen
garantiert ist, entweder durch einen expliziten Listen-
sprung oder einen automatischen Listenwechsel.
Wenn dagegen eine Liste tatsächlich beendet worden
ist, wie es bei Verwendung von
der Fall sein kann, wird der list_repeat-Stack auto-
matisch gelöscht und angefangene Schleifen können
nicht mehr beendet werden, da das nächste
dann kein zugehöriges
list_repeat
set_end_of_list
löscht die gesamte Schleifenver-
waltung, sofern kein automatischer Listenwechsel
anliegt,
list_return
dagegen nicht.
®
®
RTC
5 PCI-Karte, RTC
5 PCI-Express-Karte, RTC
Rev. 1.10 d
6 Programmierung von Anwenderprogrammen
Seite
88) und bedingten
list_until
bewerkstelligt
list_until
müssen immer
ohne zugehöriges
list_until
ein
list_until
dagegen ein
auto_change_pos
list_until
mehr vorfindet.
®
5 PC/104-Plus-Karte, RTC
Explizite Listensprünge in den Rumpf einer
list_repeat/list_until-Schleife oder aus diesem
heraus sind zwar zulässig, weil sie nicht überwacht
werden können, bei unsachgemäßem Gebrauch
davon kann jedoch die Integrität der Schleifenver-
waltung so gestört werden, dass angefangene
Schleifen u.U. nicht mehr programmgemäß ablaufen
(Unterprogramm-Aufrufe aus einer Schleife heraus
sind dagegen jederzeit problemlos möglich, sofern
die Unterprogramme nicht selbst ungepaarte
list_repeat/list_until-Befehle enthalten).
®
5 PCIe/104-Karte
89

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis