Interrupt
aus RHWiki, der freien Romhacking-Enzyklopädie
Als Interrupt wird allgmein eine durch Hardware ausgelöste Unterbrechung des Ablaufs eines Programms zwecks Ausführung eines sog. Interrupt-Handlers, der auf Hardware-Events reagiert, bezeichnet.
Verständlicher ausgedrückt: Wenn in der Hardware ein bestimmtes Ereignis/Zustand (z.B. VBlank) eintritt, ruft die Hardware ein Interrupt auf. Während das Interrupt ausgeführt wird, wird der normale Programm-Ablauf angehalten bis der Interrupt-Handler fertig ist.
Interrupts funktionieren je nach System unterschiedlich. Auf den meisten Konsolen sind bestimmte Speicheradressen definiert, an denen Code oder Pointer stehen können, die beim Auftreten eines Interrupts aufgerufen werden.
| Inhaltsverzeichnis |
Zweck von Interrupts
Interrupts erlauben dem Programmierer gezielt auf Hardware-Ereignisse zu reagieren.
Gleichzeitig wird die Auslastung durch Wegfall sonst notwendiger ständiger Abfragen minimiert: wenn ein Programmierer z.B. ein Interrupt OnKeyPress verwendet, braucht er keine Schleife, die ständig abfragt ob eine Taste gedrückt wurde, sondern nur den Handler, der von der Hardware automatisch ausgelöst wird, wenn eine Taste gedrückt wird.
Anwendungen von Interrupts
Interrupts erfüllen ganz verschiedene Zwecke. Üblich sind Interrupts für VBlank, HBlank, Tastenereignisse, Timer und DMA.
Timer-Interrupts werden z.B. mit einer bestimmten Häufigkeit pro Sekunde (Frequenz) ausgelöst, sodass im Programm zeitbasierte Ereignisse eingebaut werden können.
VBlank- und HBlank-Interrupts werden benutzt, um den Bildschirm (oder Teile davon) neu zu zeichnen, während der letzte Übertragungsvorgang gerade abgeschlossen ist, aber noch bevor der nächste beginnt. Auf diese Weise werden bei schnellen seitlichen Bewegungen Versatzeffekte vermieden. Es kann auch sein, dass einige Grafik-Controller das Zeichnen (Zugriff auf VRAM) nur während eines VBlanks oder HBlanks erlauben.
Zusätzlich kann es je nach Hardware noch spezielle andere Interrupttypen geben.
Siehe die Dokumentationen zu den jeweiligen Systemen für spezifische Informationen.
Software Interrupts
Manche Systeme (wie z.B. der GBA) erlauben die Verwendung sog. Software-Interrupts. Diese werden - wie der Name suggeriert - nicht durch Hardware, sondern durch Software ausgelöst. Im Großen und Ganzen hat das etwa den Effekt eines Subroutine-Calls.

