Keiner dieser Begriffe ist für einen Fehler in einem Arcade-Spiel geeignet, das in Assemblersprache programmiert wurde und ohne die Vorteile von Speicherschutzhardware oder Betriebssystem ausgeführt wird.
"Undefiniertes Verhalten" ist ein Begriff in C und verwandten Sprachen, der 1989 vom C-Normungsausschuss geprägt wurde. Code hat ein undefiniertes Verhalten, wenn die Sprachspezifikation nicht definiert, was er tun soll. In der Assemblersprache Z80 gibt es so etwas nicht: Die Wirkung jedes Opcodes bei jeder möglichen Eingabe ist genau definiert. Die konventionelle englische Bedeutung von "undefined behaviour" kann als zutreffend gelesen werden - der Kill Screen ist ein Verhalten, das nicht von den Leuten definiert wird, die das Spiel geschrieben haben -, aber ich würde es in diesem Zusammenhang nicht verwenden, weil es zu wahrscheinlich ist, dass es falsch ist Eindruck.
"Segmentierungsfehler" ist ein Begriff in POSIX, der sich letztendlich aus der Programmiersprache für PDP-Systeme ableitet. Segmentierungsfehler treten auf, wenn ein Programm versucht, auf eine Speicheradresse zuzugreifen, die keiner "Zuordnung" unterliegt: Die Hardware und das Betriebssystem erkennen dies und beenden das fehlerhafte Programm auf eine genau festgelegte Weise, die es dem Programm ermöglicht, sich zu erholen . So etwas wieDies könnte auf einen Fehler im Pac-Man-Spielprogramm zurückzuführen sein, da die Pac-Man-Platine nur etwas weniger als die Hälfte des 64-KB-Adressraums des Z80 mit ROM, RAM und Peripheriegeräten belegt. Ich konnte nicht herausfinden, was die reale Hardware tun würde, wenn die Software auf nicht zugeordneten Speicher zugreifen würde. Was auch immer es tun würde, wenn, wäre es unangemessen, als „Segmentation fault“ zu beschreiben, weil das „Betriebssystem“ für Pac-Man (soweit sie noch hat man) ist nicht eine Implementierung von Unix und wieder, es würde den falschen Eindruck erwecken.
Der Fehler der Stufe 256 greift indessen nicht auf nicht zugeordneten Speicher zu, so dass dies nicht möglich ist.
Es ist richtig zu sagen, dass das Spiel einen Fehler hat, der sich beim Aufsteigen auf Level 256 manifestiert. Es ist auch richtig zu sagen, dass die Hauptursache des Fehlers ein ganzzahliger Überlauf ist und dass seine Konsequenzen eine Speicherbeschädigung (oder gleichwertig Verstöße) sind des Gedächtnisses und der Typensicherheit ). Dies sind alles allgemeine CS-Begriffe, die ohne Bezugnahme auf eine bestimmte Sprache oder Betriebssystemumgebung definiert wurden.
Man kann auch genau beobachten, dass die Auswirkungen des Fehlers den Auswirkungen von Fehlern mit Speicherbeschädigung in einer modernen Umgebung ähnlich sind, die keine Segmentierungsfehler hervorrufen. Wenn Sie eine der Project Zero- Exploit-Beschreibungen lesen, werden Sie eine bemerkenswerte Ähnlichkeit mit Don Hodges ' Analyse des Pac-Man-Kill-Bildschirms feststellen .
Beachten Sie, dass ein Emulator, der den Kill-Bildschirm beim Laden der Pac-Man-ROMs nicht originalgetreu wiedergibt, die Spielhardware nicht richtig emuliert.