PBXA64 V7 ALPHA
PBXA64 ist ein nativer Windows-Compiler, der PowerBASIC, C, PILOT und Inline-Assembler direkt in echte x64-Maschinencodes übersetzt – ohne GCC, ohne C-Transpilierung, ohne LLVM. Herauskommen PE32+ Executables und DLLs mit vollem EXPORT/ALIAS/ORDINAL-Support, optimiert durch einen 20-stufigen Optimierungs-Durchlauf und geprüft durch 110 automatisierte Tests.
Paket: ~9.8 MB (ZIP)
Digital signiert von Theo Gottwald
110/110 CTest bestanden
Warum PBXA64?
Echter nativer x64-Code
Keine Abhängigkeit von GCC, LLVM oder einer C-Runtime. Der Compiler erzeugt direkt x64-Maschinencodes – vom PowerBASIC-Quelltext zur ausführbaren PE-Datei in einem Durchlauf. Das bedeutet maximale Kontrolle, minimale Binary-Größe und keine Überraschungen durch Drittanbieter-Toolchains.
Multi-Language: 4 Frontends
Schreibe Code in PowerBASIC, C (inline via #CCODE), PILOT (#PCODE) oder Inline-Assembler (#ASM) – alles im selben Projekt. Der Compiler mischt die Sprachen auf IR-Ebene und erzeugt ein gemeinsames PE. Perfekt für bildungsorientierte Anwendungen und Mixed-Language-Projekte.
20+ Optimierungs-Durchläufe
Constant Folding, Dead Code Elimination, Mem2Reg, Copy Propagation, CFG Cleanup, Strength Reduction, Instruction Combining, Branch Simplification, SCCP, GVN, DSE, ADCE, Reassociation, Load Forwarding, SROA, Inlining (CGSCC), LICM, FMA Contraction, Auto-Vectorization, PGO – alle Durchläufe arbeiten auf einer eigens entwickelten MGC-Zwischendarstellung (IR).
Eigener PE32+-Linker
Kein externer Linker nötig. Der integrierte Linker verarbeitet COFF-Objekte, extrahiert Archive (.lib), löst Symbole auf, generiert Import-Tabellen, TLS-, Exception- (.pdata/.xdata), Load-Config- und Reloc-Sektionen. Inklusive Post-Link-Optimierung (DCE, ICF, Strip) und LTO.
Sprach-Frontends im Detail
PowerBASIC (.pb, .bas, .pbi)
Vollständiger PowerBASIC-Dialekt: #DIM ALL, DECLARE/LIB/ALIAS, FUNCTION PBMAIN, SUB/FUNCTION, LOCAL/GLOBAL/SHARED/STATIC, TYPE/UNION/ENUM, Makro-Präprozessor, bedingte Übersetzung, #ASM/#CCODE/#PCODE-Direktiven, #OVERRIDE zum Ersetzen eingebauter Funktionen, MODULE-System (Delphi-Stil) mit INTERFACE/IMPLEMENTATION.
Weitere Frontends
C (#CCODE): C-Lexer/Parser, struct/union/typedef/enum/pointer/array, externe Funktionsdeklarationen, Initialisierer, Übersetzung in MGC-IR.
PILOT (#PCODE): Bildungsorientierte PILOT-Sprache: T:/A:/M:/Y:/N:/J:/U:/E:-Befehle, bedingte Suffixe, Pattern Matching.
Inline-ASM (#ASM): Intel-Syntax-x64-Blöcke mit CLOBBER/UNSAFE/ALLOW_PRIVILEGED, Variablenbindung (%var, {var}), ASMDATA-Direktiven.
Datentypen
| Typ | Größe | Beschreibung |
|---|---|---|
| BYTE | 1 | Vorzeichenloser 8-Bit-Wert |
| WORD / INTEGER | 2 | Vorzeichenloser/Signed 16-Bit |
| DWORD / LONG | 4 | Vorzeichenloser/Signed 32-Bit |
| QUAD | 8 | Signed 64-Bit |
| SINGLE | 4 | IEEE 754 32-Bit-Gleitkomma |
| DOUBLE | 8 | IEEE 754 64-Bit-Gleitkomma |
| STRING | 16 | Dynamischer Deskriptor (ptr + len) |
| WSTRING | 16 | UTF-16-Deskriptor |
| VARIANT | 16 | COM VARIANT |
| ASCIIZ PTR / Zeigertypen | 8 | BYTE PTR, WORD PTR, DWORD PTR, LONG PTR, QUAD PTR |
Alle Befehle & Builtins
Makro-Präprozessor & #OVERRIDE
Präprozessor-Direktiven
Der Präprozessor unterstützt Objekt-ähnliche Makros, einzeilige Makros, MACRO/MACROFUNCTION mit MACROTEMP, Äritätsprüfung, Rekursionsschutz und Duplikaterkennung.
#OVERRIDE – Builtins ersetzen
Mit #OVERRIDE kann jede eingebaute Funktion (LEN, ASC, TRIM$, UCASE$, LCASE$, REPEAT$, MID$, LEFT$, RIGHT$, SPACE$, CHR$, STR$, VAL, BIN$, OCT$, HEX$, FORMAT$, INSTR, TALLY, VERIFY, SCAN$, REPLACE$, STRDELETE$, STRINSERT$, STRREVERSE$, LTRIM$, RTRIM$, JOIN$, SPLIT, CLIP$, RETAIN$, SHRINK$, NUL$, DEC$, BUILD$, MKI$…MKD$, CVI…CVD, PEEK$) durch eigenen PowerBASIC- oder #ASM-Code ersetzt werden – mit Dispatch nach exaktem Parametertyp.
Compiler-Pipeline & Optimierung
Optimierungs-Durchläufe (20+)
Optimierungs-Stufen
| Stufe | Beschreibung |
|---|---|
-O0 | Keine Optimierung (Standard) |
-O1 | Safe Scalar Pipeline |
-O2 | SSA Optimizer Pipeline |
-O3 | O2 + Late Scalar Cleanup |
Zusätzlich: --pgo-generate, --pgo-use, --flto=full|thin, --verify-each-pass, --time-passes
Integrierter Assembler (408+ Mnemonics)
| ISA-Familie | Mnemonics | Abgedeckt |
|---|---|---|
| Core GPR | ~400 | Datentransfer, Arithmetik, Logik, Shift/Rotate, Bit-Operationen, Sprünge, Stack/Flags |
| SSE/SSE2/SSE3/SSSE3/SSE4 | ~300 | Skalare/vektorielle FP-Operationen, Ganzzahl-SIMD |
| AVX/AVX2/AVX-512/FMA | ~500 | Erweiterte Vektoroperationen, FMA-Verschmelzung |
| BMI1/BMI2 | ~16 | Bit-Manipulation |
| AES-NI / SHA / Crypto | ~25 | Hardware-beschleunigte Kryptographie |
| Systembefehle | ~50 | CPUID, RDTSC, SGDT, SWAPGS, etc. |
| SGX / VMX / CET | ~40 | Enclave-/Virtualisierungs-/Shadow-Stack-Befehle |
| MMX | ~60 | Ganzzahl-SIMD (x86-Kompatibilität) |
| x87 FPU | ~80 | Legacy-Fließkomma |
| Cache / Prefetch | ~20 | PREFETCH, CLFLUSH, MFENCE, etc. |
Unterstützte Operanden: x64 GPRs (8/16/32/64-Bit), XMM-Register, 6 Adressierungsmodi, 21 Operand-Varianten, Segment-Überschreibungen (fs:, gs:), relative Calls/Jumps, ASMDATA-Direktiven (db, dw, dd, dq, ascii, asciz).
PE32+-Linker — Features
DLL-Output
Unterstützt EXPORT, EXPORT ALIAS "Name", EXPORT ORDINAL n. Der Compiler erzeugt aus einem Quelltext mehrere Ausgabedateien.
Kommandozeilen-Optionen
| Option | Beschreibung |
|---|---|
-o <file> | Ausgabedatei festlegen |
-c | Nur compilieren (Objektdatei) |
-S | Nur Assembler-Ausgabe |
/exe / /dll | EXE oder DLL erzeugen |
-O0 … -O3 | Optimierungsstufe |
--flto=full|thin | Link-Time Optimization |
--pgo-generate / --pgo-use | Profilgesteuerte Optimierung |
-g / /debug | Debug-Informationen |
--dump-tokens/--dump-ast/--dump-ir | IR-Dumps für Debugging |
--diagnostic-format=text|json|sarif | Diagnostikformat wählen |
-Wall / -Wextra / -Werror | Warnungssteuerung |
--subsystem=console|windows | Subsystem wählen |
--entry=<symbol> | Einsprungspunkt festlegen |
--nodefaultlibs | Standard-WinAPI-Imports deaktivieren |
Beispiele
Hallo Welt (Konsolen-EXE)
Threading mit XLAUNCH (Multi-Parameter + Strings)
XLAUNCH unterstützt beliebig viele Parameter, auch STRING, WSTRING, LONG, QUAD, DOUBLE und benutzerdefinierte Typen. Das Handle wird mit TO an eine LONG-Variable gebunden.
DLL mit EXPORT
WinAPI + Inline-ASM
PBXA64 V7 jetzt herunterladen
110/110 Tests bestanden. Signiertes Binary. Inklusive Hilfe (CHM), WinAPI .pbi-Dateien und Beispielen.