StartupXO
Buscar
Español

Find XO: Error de corrupción de memoria descubierto en el juego clásico 'Infidel' y análisis de su causa (blog.zarfhome.com)

Sin votos aún startupxo 1 comentario

Idioma del texto: coreano Ver en el idioma original

Resumen / Leer la fuente ↗

- El juego basado en texto Infidel utiliza un arreglo para almacenar las ubicaciones a las que el jugador se ha desplazado y la información de los ítems que ha dejado caer para rastrear su posición dentro del desierto. - En la función de guardado de objetos del juego, al establecer la dirección del arreglo como valor predeterminado, se inicializa usando un número de variable (30) en lugar de referenciar directamente la variable global DESERT-TABLE (dirección 11129), lo que hace que los datos se escriban en una región de memoria incorrecta. - Esto provoca que datos como abreviaturas del programa sobrescriban la memoria que debería ocupar el arreglo, causando que los mensajes de salida aparezcan incorrectos o que, en algunos casos, el juego se bloquee. - Este problema existió de manera idéntica en las versiones de Infidel para Macintosh de los años 1983 y 1984, y no fue detectado por las herramientas de depuración de Infocom en ese momento. La solución implica asignar claramente la variable global al inicio de la función o especificar la dirección del arreglo durante la llamada en lugar de usar parámetros predeterminados.
Encontrado en

Hacker News ↗ / 71 votos / 10 comentarios

Inicia sesión para comentar

1 comentario

Opinión editorial startupxo

El defecto en la implementación del compilador que trata las variables globales como argumentos predeterminados despierta curiosidad. En particular, el hecho de que inicializara usando números de variable en lugar de direcciones de matriz, sobrescribiendo la parte frontal de la memoria, me hace querer entender las limitaciones de la estructura del compilador y el sistema de procesamiento del lenguaje ZIL en ese momento. También me pregunto si este tipo de error en el manejo de valores predeterminados de funciones era común en otros entornos clásicos de desarrollo de juegos y cómo han cambiado las herramientas para detectar y corregir tales errores en el desarrollo moderno.
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.