이 용어들 중 어느 것도 어셈블리 언어로 프로그래밍되어 메모리 보호 하드웨어 나 운영 체제의 이점없이 실행되는 아케이드 게임의 버그에는 적합하지 않습니다.
"정의되지 않은 행동"은 1989 년 C 표준위원회에 의해 만들어진 C 및 관련 언어의 최첨단 기술입니다. 언어 사양 이 무엇을 할 것인지 정의하지 않으면 코드는 정의되지 않은 동작을합니다 . Z80 어셈블리 언어에는 그러한 것이 없습니다. 가능한 모든 입력으로 모든 opcode의 효과가 잘 정의되어 있습니다. "정의되지 않은 행동"이라는 일반적인 영어의 의미를 적용하여 읽을 수 있습니다. 킬 화면은 게임을 작성한 사람들이 정의하지 않은 행동입니다. 그러나이 문맥에서는 잘못 사용할 가능성이 너무 커서이를 사용하지 않을 것입니다. 인상.
"세그먼트 결함"은 궁극적으로 PDP 시스템 프로그래밍 전문 용어에서 파생 된 POSIX의 최첨단 기술입니다. 프로그램이 어떤 것에 "매핑되지 않은"메모리 주소에 액세스하려고 할 때 세그먼테이션 결함이 발생합니다. 하드웨어와 운영 체제가이를 감지하고 오작동하는 프로그램을주의 깊게 정의하여 프로그램을 복구 할 수있는 방법으로 종료합니다 . 뭔가 같은Pac-Man 회로 보드는 ROM, RAM 및 주변 장치로 Z80의 64kB 주소 공간의 절반보다 약간만 채우므로 Pac-Man 게임 프로그램의 버그로 인해 발생할 수 있습니다. 소프트웨어가 매핑되지 않은 메모리에 액세스하려고 시도한 경우 실제 하드웨어가 수행 할 작업을 찾을 수 없었습니다. 그것은 할 것 무엇이든 (그것도 정도 팩맨의 "운영 체제"때문에,하지만, 그것은 "분할 오류"로 설명하기 부적합 할 수 있다 하나)입니다 하지 다시, 유닉스의 구현하며, 잘못된 인상을 줄 것입니다.
한편 256 레벨 버그는 매핑되지 않은 메모리에 액세스 하지 않으므로 문제가 발생합니다.
게임에 256 레벨로 넘어갈 때 나타나는 버그 가 있다고 말하는 것이 정확합니다. 또한 버그의 근본 원인은 정수 오버플 로이며 그 결과는 메모리 손상 (또는 이와 동등한 위반) 이라고 말하는 것이 정확합니다 의 메모리 및 유형 안전 ). 이는 특정 언어 또는 OS 환경을 참조하지 않고 정의 된 모든 범용 CS 용어입니다.
그것은 관찰하는 것이 정확 효과 메모리 손상 버그의 현대적인 환경에서, 버그가 효과와 유사 하지 않는 세그먼트 오류를 유발. 당신은 어떤 읽으면 프로젝트 제로 writeups을 악용, 당신은 돈 스 '에 놀라운 유사성을 볼 수 팩맨을 죽일 화면의 분석 .
팩맨 ROM을 공급할 때 킬 화면을 충실하게 재현하지 못하는 에뮬레이터는 게임 하드웨어를 올바르게 에뮬레이션하지 않습니다.