Sobre el proyecto
PB-Compiler (`pbc`) es una reimplementación limpia de los compiladores de la familia PowerBASIC, escrita en C# moderno. Su objetivo principal es permitir que código fuente BASIC vintage de la era DOS se compile en binarios `.EXE` reales y ejecutables de 16 bits para MS-DOS en hardware moderno de 64 bits. El proyecto enfatiza la fidelidad estricta a los dialectos históricos, asegurando que los programas se comporten de manera idéntica a los producidos por los compiladores propietarios originales, incluidos los errores documentados.
Las capacidades clave incluyen:
**Soporte de dialectos**: El compilador admite una amplia gama de dialectos mediante el flag `--dialect`, cubriendo el linaje de Borland (Turbo Basic, PowerBASIC 2.0-3.5) y el linaje de Microsoft (BASICA, GW-BASIC, QuickBASIC 1.0-4.5, QBasic, BASIC PDS). Cada dialecto restringe las características más recientes y habilita comportamientos específicos de la versión.
**Contrato de fidelidad**: Para los dialectos históricos, la salida se verifica contra los binarios originales utilizando un arnés diferencial basado en oráculo. Esto asegura que el código generado produzca una salida de programa byte a byte idéntica, manteniendo la compatibilidad con ecosistemas de software heredados.
**Pipeline de optimización**: Un backend de optimización avanzado basado en SSA está disponible en todos los dialectos mediante el flag `--optimize`. Este pipeline incluye plegado de constantes, eliminación de código muerto, eliminación de subexpresiones comunes, reducción de fuerza y más. Puede reducir significativamente el tamaño del binario (por ejemplo, reduciendo un programa Hello World a 25 bytes) sin alterar el comportamiento observable.
**Superconjunto de PowerBASIC 3.6**: Un dialecto con visión de futuro (`pb36`) agrega características modernas del lenguaje como funciones con cuerpo de expresión, tuplas, sobrecarga, parámetros predeterminados, lambdas/clausuras, genéricos, corrutinas (`YIELD`) y manejo estructurado de excepciones (`TRY/CATCH`). Estas son opcionales y no afectan el código existente de PB 3.5.
**Formatos de salida**: Genera archivos estándar DOS MZ `.EXE`, unidades compiladas (`.PBU`) y bibliotecas de unidades (`.PBL`). También admite la emisión de C99 portátil o LLVM IR para su posterior procesamiento.
**Instalación y uso**: Construido con .NET, se ejecuta en cualquier sistema operativo que admita .NET 6+. Los usuarios clonan el repositorio, compilan con `dotnet` y compilan fuentes BASIC usando la herramienta CLI `pbc`. Los resultados se pueden probar en DOSBox o en hardware DOS real.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.