PBXA64 V9 BETA
PBXA64 ist ein nativer x64-Windows-Compiler, der Programme für Win32 (x86/i686, PE32) und Win64 (x64, PE32+) erzeugt. Die Dual-Target-Ausgabe gilt für PowerBASIC, das typisierte C-Frontend und den Assembler.
V9 Highlights
V9 erweitert das typisierte C-Frontend um globale Objekte, Arrays, Zeiger, Aggregate, Initialisierer, Casts, sizeof, typisierte Aufrufe und Diagnosen. Die ausgelieferte C-Laufzeit implementiert jetzt die string.h- und stdlib.h-Oberfläche — Speicher, Strings, Allokation, Prozessende und Integer-Konvertierung.
Korrigierte BMI1/BMI2-VEX-Präfixe, Operandenbreiten und erweiterte Registercodierung, gehärtete Win32-Laufzeiterzeugung und deterministisches Release-Staging. CHM-Hilfe und Release-Includes aktualisiert; alle Beispiele fail-closed qualifiziert: 91/91 CTest, 12/12 Native-Matrix-Fälle und 1.099/1.099 Samples für Win32 und Win64.
PBX-Compiler-Paket: 62,5 MB (ZIP) — PBXA32, PBXA64, PBXB64 und ScharffBasic inklusive PBX-Editor, CHM-Hilfe (DE+EN), 400 Beispiele, 354 Includes und 34 C17-Header
Digital signiert von Theo Gottwald
91/91 CTest und 12/12 Native-Matrix bestanden
Ein x64-Compiler, zwei Windows-Ziele
PBXA64 selbst läuft als 64-Bit-Anwendung. Mit einem Schalter bestimmst du, ob dein Projekt als kompaktes x86/i686-Programm für Win32 oder als natives x64-Programm für Win64 entsteht. PowerBASIC, C und Assembler durchlaufen dabei dieselbe geprüfte Toolchain.
Win32
--target=win32
x86 / i686 / PE32
Win64
--target=win64
x64 / PE32+
Dasselbe Programm für beide Ziele
Die Release-Matrix kompiliert PowerBASIC, C und ASM für beide Zielarchitekturen mit -O0 und -O2.
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/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
REGEXPR 1.25 direkt integriert
PBXA64 V9 enthält eine erweiterte NFA-Engine für reguläre Ausdrücke. Sie bietet bis zu 64 Capture-Gruppen, benannte Gruppen, UTF-8/UCP, Lookaround, Rückverweise sowie gierige, faule und possessive Quantifizierer.
PowerBASIC-Code verwendet die Statements REGEXPR/REGREPL oder die kompakten Funktionen REGEX$/REGEXREPLACE$. Die C-Schnittstelle unterstützt zusätzlich Match, Search, Replace, Split und Find-All.
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/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 jetzt im PBX-Compiler herunterladen
Das digital signierte All-in-One-Paket enthält PBXA32, PBXA64, PBXB64 und ScharffBasic samt PBX-Editor und aktueller CHM-Hilfe (DE+EN) — PBXA64 V9 mit Target-Headern, Laufzeit, WinAPI-Includes und Beispielen.
Downloads pro Tag
Tägliche Download-Statistik für alle Produkte der letzten 28 Tage (rollierend). Release-Markierungen kennzeichnen neue Produktversionen.