PBXB64 V1 - Der native Multi-Frontend Compiler fuer Windows x64 (Alpha)
Fuenf Sprachen. Ein IR. Ein x64-Backend. Ein PE32+. Eine Binary. ~856 KB.
---
Download: https://smart-ai-robot.com/compilers/pbxb64/ (https://smart-ai-robot.com/compilers/pbxb64/) (8,9 MB ZIP, digital signiert)
Was ist PBXB64?PBXB64 ist ein
reiner C17-Compiler, der
fuenf Sprachen (B64, PowerBASIC, C, x64-Assembler, PILOT) durch eine einzige IR-Pipeline und einen nativen x64-Backend in
echte PE32+ Windows-Executables uebersetzt.
- Kein GCC - kein C-Transpilieren, kein Zwischenschritt ueber eine andere Sprache
- Kein LLVM - kein IR-Export, kein Clang, kein LLD
- Keine externe Toolchain - alles in einer einzigen ~856 KB Binary
- Digital signiert - von Theo Gottwald, GlobalSign GCC R45
Entstanden aus der Idee:
Kann man einen vollstaendigen Compiler-Backend (Instruction Selection, Register Allocation, Peephole Optimization, COFF-Erzeugung, PE-Linking) in reinem C17 schreiben - ohne auf LLVM, GCC oder andere Toolchains zurueckzugreifen?Die Antwort ist
ja. Und zwar in
~76 Source-Dateien / ~43.000 Zeilen C.
---
Fuenf Sprach-FrontendsDas Besondere an PBXB64: Es sind nicht fuenf separate Compiler, die zufaellig in der gleichen Binary stecken. Es ist
ein Compiler mit fuenf Frontends - alle erzeugen die gleiche IR, durchlaufen den gleichen Optimizer, den gleichen x64-Backend und den gleichen PE-Linker.
| Sprache | Extension | Status | Beschreibung |
| B64 | [tt].b64[/tt] | Active | C-aehnliche Systemsprache mit manueller Speicherverwaltung, rohen Pointern, Structs, Funktionspointern und globalen Variablen. 13/13 Link+Run-Tests. |
| PowerBASIC | [tt].pb, .bas, .pba[/tt] | Active | PowerBASIC-kompatibler Dialekt: FUNCTION/SUB, LOCAL/GLOBAL, TYPE/UNION/ENUM, vollstaendige FOR/NEXT-Semantik, PRINT, String-Builtins, File-I/O. 20/20 Link+Run-Tests. |
| C17 Subset | [tt].c, .h[/tt] | Active | #include, #define, #if/#endif, struct/union/typedef/enum, switch/case, function pointers, 33 C17-Header. 63/63 Compile-Tests. |
| x64 ASM | [tt].asm, .s[/tt] | Active | Intel + AT&T Syntax, direkte COFF/PE-Emission ohne Zwischensprache. |
| PILOT | [tt].pil[/tt] | Active | Bildungsorientierte Sprache: T:/A:/M:/Y:/N:/J:/U:/E:-Befehle, bedingte Suffixe, Pattern Matching. |
Mixed-Language-Projekte: PowerBASIC + Inline-ASM im selben Modul. B64 ruft C-Funktionen. PILOT steuert ein BASIC-Programm. Der gemeinsame IR-Layer macht es moeglich.
---
FOR/NEXT - Die vollstaendige AbdeckungDas langjaehrige "FOR-Body constant-fold"-Problem ist geloest. FOR/NEXT arbeitet jetzt korrekt fuer:
- 7 Integer-Typen: LONG, INTEGER, QUAD, DWORD, WORD, BYTE, CURRENCY
- 2 Float-Typen: SINGLE, DOUBLE (ab Z62 vollstaendig debuggt)
- Negativer STEP: [tt]FOR i = 10 TO 1 STEP -1[/tt]
- Geschachtelte Loops: 2-deep, 3-deep, mit abhaengigen Bounds ([tt]FOR j = 1 TO i[/tt])
- Float STEP: [tt]FOR f = 1.0 TO 3.0[/tt]
FUNCTION PBMAIN() AS LONG
LOCAL g AS LONG
FOR i = 1 TO 3
g = g + i
NEXT
FUNCTION = g ' = 6
END FUNCTION---
Technische Tiefe| Komponente | Umfang | Details |
| Lexer | ~3.000 LOC | Per-language Tokenizer |
| Parser | ~12.000 LOC | 5 Sprach-Frontends mit AST-Erzeugung |
| IR Builder | ~2.000 LOC | Unified Intermediate Representation |
| Optimizer | ~6.000 LOC | Pass Manager, CFG, Dominance, Constant Folding, DCE, Copy Propagation, Peephole (9 Passes), CSE, GVN, SCCP, LICM, SROA, Strength Reduction |
| x64 Backend | ~14.000 LOC | Instruction Selection, Register Allocation (Graph Coloring), Peephole Optimization, Scheduler, Frame Layout, Unwind Info |
| Assembler | ~5.000 LOC | x64 Encoding, Fixups, Relocs, Intel + AT&T Syntax |
| COFF Writer | ~1.500 LOC | COFF-Objekt-Datei-Erzeugung |
| PE Linker | ~3.000 LOC | PE32+ Image-Generierung, Import Table, Relocs, TLS, Exception Data (.pdata/.xdata) |
Optimierungs-Durchlaeufe (Auszug):[tt]Constant Folding -> Dead Code Elimination -> Mem2Reg -> Copy Propagation -> CFG Cleanup -> Strength Reduction -> Instruction Combining -> Branch Simplification -> SCCP -> GVN -> DSE -> ADCE -> Reassociation -> Load Forwarding -> SROA -> LICM -> Peephole (9 Passes)[/tt]
---
Test-Lane: 287/287 gruen, 0 expected failsJeder Build durchlaeuft eine automatisierte Test-Suite:
| Kategorie | Ergebnis | Beschreibung |
| Assembly (-S) | 190/190 | Jede .pb-Datei wird fehlerfrei nach .asm uebersetzt |
| PB Link+Run | 20/20 | PB-Programme kompilieren, linken und liefern korrekte Exit-Codes (u.a. FOR/NEXT, String-Ops, Pointer/Structs) |
| B64 Link+Run | 13/13 | B64-Programme inkl. Calls, Bedingungen, Loops, Args, Globals, Division |
| C Compile (-S) | 63/63 | C-Programme inkl. 33 C17-Headern uebersetzen fehlerfrei |
| C Link+Run | 1/1 | C-Programm laeuft und liefert korrekten Exit-Code |
Build-Zeit: ~26 Sekunden (76 Source-Dateien, MinGW-w64, neuere Versionen mit inkrementellem Build deutlich schneller)
---
Was ist im ZIP-Paket? (8,9 MB)- PBXB64.exe (~856 KB, UPX-gepackt, digital signiert von Theo Gottwald)
- PBXB64_Help.chm - Vollstaendige Windows-Hilfe mit Befehlsreferenz
- Includes/ - 1.233 PowerBASIC-Include-Dateien (.pbi) fuer Windows-API, JSON, HTTP, OAuth, SMTP, COM, NetX, URI, JWT, uvm.
- Samples/ - 127 Beispielprogramme in 5 Kategorien (asm, b64, basic, c, pb)
- README.md + SHA256.txt
---
Quick StartPowerBASIC:FUNCTION PBMAIN() AS LONG
PRINT "Hello from PBXB64!"
FUNCTION = 0
END FUNCTIONB64:fn main(): i32 {
let x: i32 = 42;
return x;
}C:#include <stdio.h>
int main(void) {
printf("Hello from PBXB64 C!\n");
return 0;
}Kompilieren & Ausfuehren:PBXB64 mein_programm.pb -o mein_programm.exe
mein_programm.exe
echo %ERRORLEVEL%Build aus dem Quellcode (fuer Entwickler):cd core
build_mingw64.bat
build\PBXB64.exe --version
# -> PBXB64 version 0.50.0-z62Voraussetzung:
MinGW-w64 (x86_64-w64-mingw32-gcc 15.2.0 oder vergleichbar)
---
Alpha-HinweisPBXB64 V1 ist eine
Alpha-Version. Das bedeutet:
Was bereits funktioniert (stabil und getestet):- Fuenf vollstaendige Sprach-Frontends (B64, PB, C, ASM, PILOT)
- FOR/NEXT fuer alle 7 Integer-Typen + 2 Float-Typen
- PRINT, String-Operationen, Datei-I/O
- B64: Funktionen, Parameter, globale Variablen, bedingte Anweisungen, Schleifen
- C: #include, #define, struct/union/enum, switch/case, Funktionspointer
- Assembler: Intel und AT&T Syntax, COFF/PE
- PILOT: Vollstaendiger Befehlssatz
- PE32+-Linker: Import-Tabellen, Relocs, Exception-Daten
- 287 automatisierte Tests - alle gruen, 0 erwartete Fehlschlaege
- UPX-gepackt und digital signiert
Was noch nicht vollstaendig ist:- COM-Unterstuetzung (Parser vorhanden, Runtime-Stubs geben Default-Werte)
- GUI/DIALOG/CONTROL (Parser + IR vorhanden, Runtime nicht vollstaendig implementiert)
- C-Frontend: Subset - kein vollstaendiger C17-Host (keine libc-Bibliothek, kein vollstaendiger Praeprozessor fuer alle Edge Cases)
- Kein Debugger - Fehlersuche erfolgt klassisch ueber PRINT und Exit-Codes
- Backwards-Compatibility mit PowerBASIC: Gegeben, wo getestet - aber bei komplexen WinAPI-Deklarationen koennen Unterschiede auftreten
Fuer wen ist PBXB64 V1 geeignet?- Entwickler, die einen nativen x64-Compiler aus einer Hand suchen
- PowerBASIC-Umsteiger, die ihre Projekte auf x64 portieren moechten
- Sprachdesign-Interessierte, die B64 oder Mixed-Language-Projekte ausprobieren wollen
- Bildungszwecke (PILOT + BASIC + C in einem Compiler)
Fuer wen ist es (noch) nicht geeignet?- Produktivumgebungen, die auf vollstaendige COM-GUI-Unterstuetzung angewiesen sind
- Anwender, die einen Debugger oder eine IDE-Integration benoetigen (reines CLI)
- Projekte, die ein vollstaendiges C17-Hosted-Libc benoetigen
---
Ausblick: V2 und darueber hinausGeplant fuer die naechsten Versionen:- Debug-Informationen (DWARF) - damit Debugger funktionieren
- Vollstaendigere C17-Unterstuetzung - Richtung Hosted LibC
- GUI/COM-Runtime-Stubs ersetzen - Dialoge, Controls, Grafik
- Performance-Optimierungen am Backend
- Erweiterte Linker-Features
Der Compiler ist als
offene Entwicklungsplattform konzipiert. Wer sich beteiligen moechte - Features vorschlagen, Bug-Reports einreichen, Code beitragen - ist herzlich willkommen.
---
Download: https://smart-ai-robot.com/compilers/pbxb64/ (https://smart-ai-robot.com/compilers/pbxb64/)
8,9 MB ZIP - PBXB64.exe (856 KB UPX) - PBXB64_Help.chm - 1233 Includes - 127 Samples
Theo Gottwald | Dettenheim, Deutschland | info@it-berater.org (mailto:info@it-berater.org)
Web: smart-ai-robot.com (https://smart-ai-robot.com/) | Smart Package Robot (https://www.smart-package.com/)
PBXB64 V1 - Z62 "FOR/NEXT Coverage" - 2026-06-10 - 287/287 Tests gruen, 0 expected fails, 0 Regressions.
Hi Theo,
Gratulation - ich hatte nicht gedacht, dass Du und KI das hinbekommen. Ich habe bei JKB intensiv als Betatester geholfen. Darum geht meine Orientierung in diese Richtung. Ich hoffe, Juergen gibt aufgrund der mangelnden Resonanz nicht auf. Stand heute, aus meiner Sicht, es wäre gut gewesen, ihr beide hättet bzgl. Projekt PB64bit zusammen gefunden. Auf der anderen Seite ist es nicht schlecht, dass es Alternativen gibt.
Viel Erfolg weiterhin!
Hallo Norbert,
wir arbeiten zusammen, ich bin auch in Kontakt mit Jürgen.
Er möchte evtl. auch seinen Compiler auf meiner WEB-Site im Oktober unterbringen.
Derzeit möchte er erst Mal was "der Jahrezeit" entsprechendes machen,
und das ist auch gut so.
Ich hab ihm von Anfang an gesagt dass wir hier nur "Paar Opas"" sind die noch Interesse an PB haben.
Evtl. könnte es Firmen mit bestehendem Source-Code geben, die interssiert sind.
Das war als er mit seinem Projekt angefangen hat noch anders, aber in der Software und beim Obst vergeht die Zeit schnell.
Du bist natürlich hier auch willkommen.
Defacto sind meine Alpha-Compiler im Bezug auf PB langsamer beim Kompilieren und auch der Code wird erwartungsgemäß schlechter sein als bei Jürgens Compiler. Dafür habe ich paar Features mehr eingebaut und ein zusätzliches C-Frontend.
Aber vor allem kann man es jetzt schon ausprobieren. Jürgen möchte erst im Spätjahr - so hab ich Ihn verstanden - seinen Compiler fertig machen. Ich hatte auch gehofft er würde zu erst publizieren.
Habe Ihm auch Hilfe angeboten, bei allem, Fehlersuche, bei der Hilfe ... aber er hat so entschieden.
Gut nun mache ich das Mal.
Hi Theo,
dass ihr Kontakt hattet, weiß ich, und auch das, was bei ihm im Moment Priorität hat. Über die Gründe der geringen Resonanz habe ich mir auch Gedanken gemacht. Meine Vorschläge werde ich Ihm im Herbst unterbreiten. Einer davon ist eine eigene Homepage für JKB. Das Parken auf anderen, wie z.B. auf Deiner wirkt nicht professionell. Es stimmt nicht, dass sein JKB nicht fertig ist. Es tut das, was es tun soll. Nur einiges um den Kern herum ist noch nicht 100% abgerundet (Hilfedateien und IDE-Spezifika). Aber es lässt sich damit gut arbeiten.
Hallo Norbert
Im Prinzip hat er ja auch für seinene Editor schon einen eigene Homepage.
Aber mein Eindruck ist dass er im Moment einfach nicht so viel Zeit am PC verbringen will sondern an die frische Luft will.
Ich rede Ihm da nicht rein, wenn er kommt und Hilfe braucht hat er ja meine Mailadresse.
Ich wollte eignetlich nach Ihm releasen, weil er schon weiter ist.
Aber da er gesagt hat er relleased erst im Oktober habe ich das vorgezogen so haben die Leute die das interessiert schon Mal "was zum Spielen".
Und kleine Exe kann man ja damit schon machen. Damit lebt die PB-Syntax schon mal weiter.
Ob die KI in Zukunft noch compiler braucht oder gleich die EXE ausspuckt, da werden wir sehen -
aber genauso wie es heute noch Leute gibt die C64 und AMIGA Nutzen gibt es ja vielleicht auch eine "Hand voll Powerbasic Opas" die sich darüber freuen. Also ausser mir, bin ja einer davon.