Sobre o projeto
PB-Compiler (`pbc`) é uma reimplementação clean-room dos compiladores da família PowerBASIC, escrita em C# moderno. Seu objetivo principal é permitir que código-fonte BASIC vintage da era DOS seja compilado em binários `.EXE` MS-DOS de 16 bits reais e executáveis em hardware moderno de 64 bits. O projeto enfatiza fidelidade estrita aos dialetos históricos, garantindo que os programas se comportem de forma idêntica aos produzidos pelos compiladores proprietários originais, incluindo bugs documentados.
As principais capacidades incluem:
**Suporte a Dialetos**: O compilador suporta uma ampla variedade de dialetos por meio da flag `--dialect`, cobrindo a linhagem Borland (Turbo Basic, PowerBASIC 2.0-3.5) e a linhagem Microsoft (BASICA, GW-BASIC, QuickBASIC 1.0-4.5, QBasic, BASIC PDS). Cada dialeto restringe recursos mais recentes e habilita comportamentos específicos de versão.
**Contrato de Fidelidade**: Para dialetos históricos, a saída é verificada contra binários originais usando um harness diferencial orientado por oráculo. Isso garante que o código gerado produza saída de programa byte a byte idêntica, mantendo compatibilidade com ecossistemas de software legado.
**Pipeline de Otimização**: Um backend avançado de otimização baseado em SSA está disponível em todos os dialetos por meio da flag `--optimize`. Esse pipeline inclui dobramento de constantes, eliminação de código morto, eliminação de subexpressões comuns, redução de força e mais. Ele pode reduzir significativamente o tamanho do binário (por exemplo, encolhendo um programa Hello World para 25 bytes) sem alterar o comportamento observável.
**Superconjunto PowerBASIC 3.6**: Um dialeto voltado para o futuro (`pb36`) adiciona recursos modernos de linguagem, como funções com corpo de expressão, tuplas, sobrecarga, parâmetros padrão, lambdas/closures, genéricos, corrotinas (`YIELD`) e tratamento estruturado de exceções (`TRY/CATCH`). Esses recursos são opcionais e não afetam código PB 3.5 existente.
**Formatos de Saída**: Gera arquivos DOS MZ `.EXE` padrão, unidades compiladas (`.PBU`) e bibliotecas de unidades (`.PBL`). Também suporta a emissão de C99 portátil ou LLVM IR para processamento posterior.
**Instalação e Uso**: Construído usando .NET, roda em qualquer sistema operacional que suporte .NET 6+. Os usuários clonam o repositório, compilam com `dotnet` e compilam fontes BASIC usando a ferramenta de CLI `pbc`. Os resultados podem ser testados no DOSBox ou em hardware DOS real.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.