- Verzögerungsschleife
-
Dieser Artikel wurde aufgrund von inhaltlichen Mängeln auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen und beteilige dich an der Diskussion! (+)
Eine Verzögerungsschleife ist ein Teil eines Computerprogramms, der dazu dient ist, die Abarbeitung folgender Instruktionen zeitlich zu verzögern.
In den meisten Fällen sind Verzögerungsschleifen als verschachtelte Schleife ausgeführt, da so ein kurzer Programmcode einen großen Verzögerungseffekt bewirken kann. Verzögerungsschleifen werden oft als Unterprogramm geladen, das mit dem Argument des Funktionsaufrufs variabel wird. Wird in einem großen Programm häufiger eine Verzögerungsschleife benötigt, verkleinert diese Programmiertechnik die Länge des kompilierten Programms.
Grundlage einer Verzögerungsschleife ist die Tatsache, dass Prozessoren die Instruktionen nach einer festen Reihenfolge abarbeiten. Zu beachten ist, dass Prozessoren unterschiedliche Instruktionen oft verschieden schnell bearbeiten können. So ist eine Addition meist etwa doppelt so schnell wie eine Multiplikation ausgeführt. CPU-Hersteller stellen diese Informationen in ihren Befehlsreferenzen zur Verfügung. Das Einführen von Pipelines und anderen Optimierungen neuer Prozessoren, sowie die Unkenntnis des Programmierers, welche Daten in einem möglichen Cache liegen, machen das Programmieren von exakten Verzögerungschleifen anspruchsvoller.
Standardmäßig verwendet man in Verzögerungsschleifen den NOP-Befehl der immer genau einen Taktzyklus benötigt und keine Änderungen vornimmt. Da Verzögerungschleifen auf Grund ihrer starken Bindung zur Hardware als unelegante Lösungen gelten, werden sie auf allen Systemen, die Hardwaretimer zur Verfügung stellen gemieden oder durch Funktionen des Betriebssystems ersetzt.
Prinzipiell ermöglicht jede Programmiersprache die Erstellung von Verzögerungsschleifen, ist aber historisch stark an Assemblercode gebunden.
Beispielcode einer 1-stufigen Verzögerungsschleife in Pseudocode:
- Lade Variable A mit Wert 10
- Führe NOP aus
- Reduziere Variable A um 1
- Wenn A nicht null ist springe zu "2."
siehe auch: Softwarebremse
Wikimedia Foundation.