Nessuno di questi termini è appropriato per un bug in un gioco arcade che è stato programmato in linguaggio assembly e viene eseguito senza il vantaggio dell'hardware di protezione della memoria o del sistema operativo.
"Comportamento indefinito" è un termine dell'arte in C e lingue correlate, coniato dal comitato degli standard C nel 1989. Il codice ha un comportamento indefinito quando la specifica del linguaggio non definisce quale lo farà. Non c'è nulla di simile nel linguaggio assembly Z80: l'effetto di ogni opcode con ogni input possibile è ben definito. Il significato inglese convenzionale di "comportamento indefinito" può essere letto per essere applicato - lo schermo di uccisione è un comportamento non definito dalle persone che hanno scritto il gioco - ma non lo userei in questo contesto perché è troppo probabile che dia il torto impressione.
"Errore di segmentazione" è un termine dell'arte in POSIX, derivato in ultima analisi dal gergo di programmazione del sistema PDP. Gli errori di segmentazione si verificano quando un programma tenta di accedere a un indirizzo di memoria che non è "mappato" a qualcosa: l'hardware e il sistema operativo lo rilevano e arrestano il programma malfunzionante, in un modo accuratamente definito che consente al programma di recuperare . Qualcosa come potrebbe essere accaduto a causa di un bug nel programma di gioco di Pac-Man, perché il circuito Pac-Man popola solo poco meno della metà dello spazio degli indirizzi 64kB dello Z80 con la ROM, RAM e periferiche, ma non sono stato in grado di scoprire cosa avrebbe fatto il vero hardware se il software avesse tentato di accedere alla memoria non mappata. Comunque, qualunque cosa faccia, sarebbe inappropriato descrivere come un "difetto di segmentazione", perché il "sistema operativo" per Pac-Man (nella misura in cui ha uno) è non un'implementazione di Unix e, ancora una volta, darebbe un'impressione sbagliata.
Il bug di livello 256, nel frattempo, non accede alla memoria non mappata, quindi è discutibile.
È corretto dire che il gioco ha un bug che si manifesta avanzando al livello 256. È anche esatto dire che la causa principale del bug è un overte intero / em> e che le sue conseguenze sono corruzione della memoria (o, equivalentemente, violazioni della memoria e sicurezza del tipo ). Questi sono tutti termini CS generici definiti senza riferimento ad alcuna lingua o ambiente operativo specifico.
È anche accurato osservare che gli effetti del bug sono simili agli effetti, all'interno di un ambiente moderno, di bug di corruzione della memoria che non provocano segmentazione difetti. Se leggi uno dei Zero del progetto sfrutta le annotazioni, vedrai una notevole somiglianza con l'analisi della schermata di uccisione di Pac-Man .
Nota che un emulatore che non riproduce fedelmente la schermata di uccisione quando viene alimentato con le ROM di Pac-Man non emula l'hardware di gioco correttamente.