El clásico shooter DOOM sigue ejecutándose en las "plataformas" más inesperadas. Recientemente, un programador decidió presentar su proyecto para ejecutar el juego en expresiones regulares.
Desde un punto de vista técnico, toda la "máquina" para ejecutarlo es una cadena muy larga de 96,6 MB. Los registros, la RAM, el búfer de fotogramas, el motor DOOM compilado en un conjunto de instrucciones personalizado y el archivo WAD se almacenan dentro de esta cadena como texto sin formato.
Un controlador especial recorre esta cadena y utiliza una lista de reglas predefinida:
El controlador aplica una lista fija y ordenada de reglas de "buscar y reemplazar" a la [cadena]; la primera regla que coincide se activa exactamente una vez, y esto se considera un "paso". No hay otros cálculos ocultos en ninguna parte: ni intérprete, ni aritmética del lado del host. Si se eliminan las reglas, lo que queda es simplemente un archivo de texto normal.
El desarrollador explicó que las reglas utilizadas implementan un pequeño procesador de 32 bits:
544 reglas implementan una CPU de 32 bits, cuyo sumador es una tabla de búsqueda de 512 elementos con un acarreo "extendido" a través de grupos de captura; el acceso a la memoria se realiza saltando un número exacto de caracteres, recopilados a partir de los dígitos de la dirección, y la búsqueda de instrucciones se realiza en el código de operación actual de la misma manera, controlado por un contador de programa.
El propio DOOM está compilado para este "procesador" usando 8cc y ELV. La velocidad de renderizado de fotogramas no es muy rápida: para las pruebas, grabó un video y el procesamiento de un fotograma tardó 3 minutos, mientras que el cálculo se realizó en cinco máquinas que trabajaban en paralelo.
Los códigos fuente del proyecto "doom-regex" están disponibles públicamente en el repositorio 4RH1T3CT0R7.