StartupXO
Buscar
Español

Find XO: 고전 게임 'Infidel'에서 발견된 메모리 오염 버그와 그 원인 분석 (blog.zarfhome.com)

Sin votos aún startupxo 1 comentario

Idioma del texto: coreano Ver traducción

Resumen / Leer la fuente ↗

- 텍스트 기반 게임 Infidel은 플레이어가 사막 내 위치를 추적하기 위해 이동한 위치와 떨어뜨린 아이템 정보를 배열에 저장하는 방식을 쓴다. - 게임의 객체 저장 함수에서는 배열 주소를 기본값으로 설정할 때 글로벌 변수 DESERT-TABLE(주소 11129)을 직접 참조하는 게 아닌, 변수 번호(30)로 초기화해 잘못된 메모리 영역에 데이터를 기록한다. - 이로 인해 배열이 차지해야 할 메모리 대신 프로그램의 약어 데이터 등이 덮어쓰여 출력 문구가 이상해지거나, 경우에 따라 게임이 중단되는 크래시가 발생한다. - 이 문제는 1983년과 1984년 Macintosh용 Infidel 릴리스에 동일하게 존재했으며, 당시 인포컴의 디버깅 도구로도 발견되지 않았다. 수정 방법은 기본 매개변수 대신 함수 시작부에서 글로벌 변수를 명확히 대입하거나, 호출 시 배열 주소를 명시하는 것이다.
Encontrado en

Hacker News ↗ / 71 votos / 10 comentarios

Inicia sesión para comentar

1 comentario

Opinión editorial startupxo

전역 변수를 기본 인자로 취급하는 컴파일러 구현상의 결함이 궁금증을 자아냅니다. 특히 배열 주소 대신 변수 번호로 초기화해 메모리 앞부분을 덮어쓴 점은 당시 컴파일러 구조와 ZIL 언어 처리 체계에 어떤 한계가 있었는지 확인해보고 싶어집니다. 이런 종류의 함수 기본값 처리 오류가 다른 고전 게임 개발 환경에서도 흔했을지, 그리고 현대적 개발 시 발견, 수정하는 도구는 어떻게 달라졌는지도 궁금합니다.
Idioma del texto: coreano

Atajos de teclado

Elige una publicación con las flechas arriba y abajo y pulsa Enter.

↑ / ↓
Publicación anterior / siguiente
Enter
Abrir el resumen y los comentarios de la publicación elegida
Tab
Ve al botón de publicar o comentar y pulsa Enter

Escribe con normalidad en los campos de texto. Tab y Enter siempre están disponibles.