delegua-x64
v0.0.1
Published
Compilador Delégua para binários x64 via NASM, sem LLVM.
Readme
delegua-x64
Compilador Delégua para binários nativos x64 via NASM, sem dependência do LLVM. Toolchain mais leve que o delegua-nativo.
Pipeline: código Delégua → NASM assembly (.asm) → objeto (.o) → binário executável.
Pré-requisitos
Linux
sudo apt install nasm binutilsWindows
Instale o NASM e o MinGW-w64 (fornece o gcc). Adicione os diretórios bin de ambos ao PATH.
Para verificar:
nasm --version
ld --version # Linux
gcc --version # WindowsUso
npx delegua-x64 <arquivo.delegua>O compilador executa o pipeline automaticamente:
- Verifica as ferramentas do toolchain (
nasm,ld/gcc) - Lê e analisa o código-fonte Delégua
- Gera o arquivo assembly NASM (
.asm) - Monta com
nasmgerando o objeto (.o) - Linka com
ld(Linux) ougcc(Windows) gerando o binário - Remove os arquivos temporários
O binário gerado ficará no mesmo diretório do arquivo de entrada, com o mesmo nome (sem extensão).
Opções
| Opção | Descrição |
|-------|-----------|
| -o <nome> | Define o nome do binário de saída |
| --alvo <linux\|windows> | Força a plataforma alvo (padrão: detectado pelo SO) |
| --manter-temporarios | Não remove os arquivos .asm e .o após a compilação |
Exemplos:
# Compilação básica
npx delegua-x64 meu_programa.delegua
# Com nome de saída personalizado
npx delegua-x64 meu_programa.delegua -o saida
# Mantendo os arquivos intermediários para inspeção do assembly
npx delegua-x64 meu_programa.delegua --manter-temporariosVerificação do toolchain
Ao iniciar, o compilador verifica automaticamente quais ferramentas estão disponíveis no PATH:
▶ Verificando ferramentas do toolchain
✓ NASM encontrado
✓ ld (GNU Binutils) encontradoFerramentas ausentes cancelam a compilação com uma mensagem de ajuda sobre como instalá-las.
Executando o binário gerado
./meu_programaEstrutura do pacote
fontes/
├── index.ts Exportações da biblioteca
├── ilc.ts Ponto de entrada da CLI
├── compilador-x64.ts Pipeline de compilação
├── verificador-toolchain.ts Detecção de nasm/ld/gcc no PATH
└── interfaces/
├── index.ts
├── opcoes-compilacao-interface.ts
└── resultado-compilacao-interface.tsComparação com delegua-nativo
| | delegua-nativo | delegua-x64 |
|---|---|---|
| Intermediário | LLVM IR (.ll) | NASM assembly (.asm) |
| Montador/compilador | clang++ | nasm + ld/gcc |
| Otimizações | Sim (O0–Oz via opt) | Não |
| Dependência | LLVM + Clang (pesado) | NASM + binutils (leve) |
