Nessuno di questi termini è appropriato per un bug in un gioco arcade che è stato programmato in linguaggio assembly e viene eseguito senza beneficio dall'hardware o dal sistema operativo di protezione della memoria.
"Comportamento indefinito" è un termine dell'arte in C e linguaggi correlati, coniato dal comitato per le norme C nel 1989. Il codice ha un comportamento indefinito quando le specifiche del linguaggio non definiscono ciò che farà. Non esiste una cosa del genere nel linguaggio assembly Z80: l'effetto di ogni codice operativo con ogni possibile input è ben definito. Il significato inglese convenzionale di "comportamento indefinito" può essere letto per essere applicato - la schermata 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 definitiva 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 nulla: 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 del generequesto potrebbe essere successo a causa di un bug nel programma di gioco Pac-Man, perché il circuito Pac-Man popola solo poco meno della metà dello spazio degli indirizzi da 64kB dello Z80 con ROM, RAM e periferiche, ma io non ho " non sono riuscito a scoprire cosa farebbe l'hardware reale se il software tentasse di accedere alla memoria non mappata. Qualunque cosa farebbe, tuttavia, sarebbe inappropriato descriverlo come un "errore di segmentazione", poiché il "sistema operativo" per Pac-Man (nella misura in cui ne ha anche uno) non è un'implementazione di Unix e, ancora, darebbe l'impressione sbagliata.
Il bug di livello 256, nel frattempo, non accede alla memoria non mappata, quindi è discutibile.
È esatto dire che il gioco ha un problema che si manifesta su avanzare al livello 256. È anche esatto dire che la causa principale del problema è un integer overflow , e che le sue conseguenze sono il danneggiamento della memoria (o, equivalentemente, violazioni di memoria e tipo di sicurezza ). Questi sono tutti termini CS di uso generale definiti senza riferimento a una lingua o ad un ambiente operativo particolari.
E 'anche preciso osservare che gli effetti del bug sono simili agli effetti, all'interno di un ambiente moderno, di bug di memoria-corruzione che non provocano errori di segmentazione. Se leggi uno qualsiasi degli exploit del Progetto Zero , vedrai una notevole somiglianza con l' analisi di Don Hodges della schermata di uccisione di Pac-Man .
Si noti che un emulatore che non riproduce fedelmente la schermata di interruzione quando viene alimentato le ROM Pac-Man non emula correttamente l'hardware del gioco.