X-Code
X-Code ist ein eigenständiges eingebettetes Assembler-Frontend mit einem typisierten Dialekt und einem eigenen Parser, Befehlskatalog, virtuellen Registern und Registerzuweisung. Im BASIC-Quelltext wird er mit #XCODE geöffnet und ausschließlich mit #ENDX geschlossen. Die Expansion wird anschließend vom eingebauten Inline-Assembler verarbeitet.
Eine eigenständige .asm-Datei verwendet das ASM-Frontend. #ASM … #ENDASM, #ACODE … #AEND und einzelne !-Zeilen schreiben reguläre Assemblerbefehle. X-Code ergänzt dagegen X.VREG, X.ADD, X.CLAMP, strukturierte Steuerung und Speicherbefehle. Es ist eine zusätzliche eingebettete Dialektebene; die neun durch --print-capabilities=json ausgewiesenen registrierten Spracheingänge plus der separate ASM-Eingang werden deshalb nicht als elf eigenständige Dateifrontends gezählt.
Optionen und Arbeitsweise
OPT=0..3, SPILL=AUTO|ERROR, FEATURES=BASELINE|AUTO|…, REGALLOC=AUTO|MANUAL, APX=AUTO|EMULATE|NATIVE|CHECK.
Virtuelle Register besitzen Typen wie U32, U64, I32 oder F64. Operanden müssen zum jeweiligen Befehl passen: Die Grenzen von X.CLAMP sind gleich typisierte virtuelle Register, keine unmittelbaren Zahlen. Mit --emit-xcode-asm und --xcode-allocation-report lassen sich expandierter Assembler und Registerzuweisung nachvollziehen.
1. Eigene X-Code-Befehle
V21: kompiliert und nativ ausgeführt am 30.09.2026. Der Code prüft das begrenzte Ergebnis 10; Abweichungen liefern Fehlercode 1.
Geprüften Quelltext öffnen2. BASIC-Variablen direkt verwenden
X.LOAD liest die BASIC-Variable, X.STORE schreibt das Ergebnis. V21: native Prüfung 21 × 2 = 42 bestanden. DWORD PTR bestimmt hier ausdrücklich die 32-Bit-Breite.
Geprüften Quelltext öffnen3. Bridge aus einem anderen Frontend
BRIDGE IMPORT bindet das exportierte ASM-Symbol. V21: beide Quellen gemeinsam kompiliert; der native Test prüft den Anfangswert 41 und die Änderung auf 42. Das ist eine echte gemeinsame Variable, kein kopierter Wert.
Geprüften Quelltext öffnenprovider.asm
Die Bridge kann registrierte Variablen anderer Frontends an BASIC binden. Dieses konkrete Beispiel prüft ASM → BASIC → X-Code; andere Sprachpaare sind damit nicht automatisch nachgewiesen.
4. APX mit getrenntem Zielregister emulieren
V21: übersetzt und nativ auf dem vorhandenen x64-System ausgeführt; Ergebnis 1 + 2 = 3 geprüft. Die Emulation ersetzt APX-Register durch vorhandene x64-Register und benötigt für dieses Beispiel keine native APX-Hardware.
Geprüften Quelltext öffnenIn V23 behoben
Bei add r16, r17, r16 mit Anfangswerten 1 und 2 liefert die Emulation im freigegebenen V8-Compiler (PBXB64 V23) das richtige Ergebnis 3, auch wenn das Zielregister zugleich Quellregister ist. Geprüft am 05.10.2026 auf einem Prozessor ohne APX.
5. Native APX-Codierung prüfen
V21: nur kompiliert und Codierung geprüft. Erwartete REX2/EVEX-Bytes sind vorhanden. Dieses Programm wurde nicht nativ ausgeführt; dafür muss die CPU die benötigten APX-Instruktionen tatsächlich unterstützen. Übersetzung belegt keine Hardwareausführung.
Geprüften Quelltext öffnenDie drei Zeilen sind tatsächlich geprüfte Ausschnitte aus native.asm. APX-EMULATE und APX-NATIVE sind unterschiedliche Prüfumfänge.
Prüfstand und Referenzen
Alle oben bezeichneten Prüfläufe verwenden die byteidentische PBXB64-0.50.0-V21-EXE aus dem PBX-V7-Paket. Eingaben, Prüfumfang, Compilerhash und Zeitpunkt sind je Beispiel dokumentiert. Einzelbeispiele ersetzen keine vollständige Compilerqualifikation. Die ausgelieferte Frontend-Dokumentation sowie die X-Code-Kapitel der CHM-Hilfe erklären Blocksyntax, Befehle, Register, Optionen und APX.
Prüfbelege ansehen#OVERRIDE / Präprozessor