Oscar Toledo documenta el proceso técnico de modernizar un compilador C para transputers, originalmente escrito en 1998 para plataformas de 32 bits, para que funcione en sistemas modernos de 64 bits. El objetivo es permitir que el compilador se ejecute en hardware actual, como un MacBook Air M1, sin depender de emuladores, manteniendo la capacidad de generar código para procesadores AMD Am29000.
El desafío principal radica en la incompatibilidad de tipos de datos entre la arquitectura original y la moderna. El código original utilizaba enteros de 32 bits y punteros de 32 bits, lo que generaba errores críticos al intentar compilarlo en un entorno de 64 bits, donde los punteros son de 64 bits. Además, el compilador heredaba problemas de diseño de Small-C, una superset de C que no incluía la palabra clave 'struct', lo que obligaba a almacenar estructuras en un 'byte pool' (pila de bytes) y dividía las palabras en dos bytes para el procesador 8080.
Para resolver esto, Toledo reescribió el código fuente en C estándar, introduciendo prototipos de funciones según la normativa de Kernighan y Ritchie y reemplazando los enteros por punteros a FILE*. Se reestructuró el código de gestión de memoria y tipos, utilizando estructuras de datos en lugar de arrays de enteros para almacenar metadatos de expresiones y tipos. Esto eliminó la ambigüedad entre punteros y enteros y permitió una asignación segura de memoria. El proceso también implicó la limpieza de comentarios en español y la unificación de la lógica de compilación en un único archivo driver, facilitando la portabilidad y la mantenibilidad del software.
