Jugando en diferentes idiomas

Una de las ventajas de utilizar hardware más antiguo es su simplicidad comparativa y su documentación completa. Después de años o décadas de que los usuarios programen en una plataforma, la cantidad de conocimiento disponible para ella puede volverse enorme. Esto ciertamente sucede con el microprocesador 6502, utilizado en computadoras Apple más antiguas y algunos sistemas de videojuegos de los años 80. La gran cantidad de recursos disponibles lo convierte en un candidato ideal para explorar varios lenguajes de programación, tanto sus ventajas como sus desventajas.

Este proyecto explora estas diferencias con un juego de robots que ha sido programado de cuatro formas diferentes en tres idiomas. [Joey] Primero creó el juego en Python y luego comenzó a portarlo al 65C02, una variante CMOS del 6502. La primera iteración es su lenguaje ensamblador, y luego una segunda iteración con código ensamblador optimizado. Desde allí, lo transporta a C y finalmente a Forth. Cada versión del juego está disponible para jugar en un navegador con un emulador para iniciar el hardware 6502.

Debido a que los juegos funcionan en el navegador, hay otras herramientas disponibles para examinar la forma en que funciona el juego en cada idioma. Los registros son visibles en tiempo real, al igual que los valores almacenados en la memoria. Es una mirada interesante al hardware antiguo y su funcionamiento interno. Para una inmersión aún más profunda en el 6502, es posible construir una computadora que funcione en placas con una.

  • JRD dice:

    La parte más interesante de esto son los detalles de la "segunda iteración con código de enlace optimizado". Lo reescribió en NASM (que no es una línea de ensamblaje para el 6502, pero no importa), y luego lo pasó a un programa Python personalizado que incluso produjo gráficos de llamadas. Me encantaría ver una versión Z80. Realmente, realmente lo haría.

    • Joey Shepard dice:

      Hola JRD, ¡gracias por leer! El optimizador mejora el rendimiento mediante el uso de direcciones estáticas en una página cero en lugar de utilizar la pila. No estoy seguro de cómo se instala la memoria en el Z80, pero es posible que pueda hacer un tipo similar de optimización según los beneficios de los distintos tipos de acceso a la memoria. El script de optimización que tengo en GitHub está configurado para poder analizar todo en la fuente y luego poder reescribir partes de él para cosas como la optimización del almacenamiento en caché. Si solo desea asignar direcciones de memoria optimizadas, podría soportar un script mucho más simple.

Joel Carrasco
Joel Carrasco

Deja una respuesta

Tu dirección de correo electrónico no será publicada.