Lyx Compiler – CLI Referenz
Der Lyx-Compiler (lyxc) wird über die Kommandozeile gesteuert. Er folgt dem klassischen Muster: \ lyxc <Eingabedatei> [Optionen]
1) Basis-Operationen
| Parameter | Beschreibung |
|---|---|
| -o <datei> | Definiert den Namen der Ausgabedatei. Standardmäßig a.out (Linux/macOS) oder a.exe (Windows). |
| -I <pfad> | Fügt einen Include-Pfad hinzu. Der Compiler sucht dort nach Modulen/Units. Kann mehrfach angegeben werden. |
| –std-path=<pfad> | Überschreibt den Standardpfad zur Lyx-Standardbibliothek (std-lib). |
2) Target & Architektur
Lyx ist ein nativer Cross-Compiler. Du kannst von jedem Host-System aus Binaries für alle unterstützten Plattformen bauen.
--target=<TARGET>
Legt das Ziel-Betriebssystem und das Binärformat fest.
| linux / elf | Linux x86_64 (ELF64) |
| win64 / windows | Windows x64 (PE32+) |
| arm64 / linux-arm64 | Linux ARM64 (ELF64) |
| macosx64 / darwin | macOS x86_64 (Mach-O) |
| macos-arm64 | macOS ARM64 (Apple Silicon, Mach-O) |
| esp32 / xtensa | ESP32 Microcontroller (Xtensa, ELF32) |
--arch=<ARCH>
Erzwingt eine spezifische CPU-Architektur.
| x86_64 / x64 | Intel/AMD 64-Bit |
| arm64 / aarch64 | ARM 64-Bit (z.B. Raspberry Pi 4/5, Apple M-Series) |
| xtensa | Tensilica Xtensa (ESP32) |
3) Optimierung & Energy-Awareness
Ein Alleinstellungsmerkmal von Lyx ist die Steuerung der Code-Erzeugung basierend auf dem Energiebudget.
--target-energy=<1-5>
Konfiguriert das Energy-Model des Backends. Dies beeinflusst die Registerwahl, die Nutzung von SIMD/FPU und die Cache-Lokalität.
1 (Minimal): Fokus auf minimalen Stromverbrauch (Batterie-Schonung).
2 (Balanced): Ausgewogenes Verhältnis.
3 (Medium): Standard Performance-Optimierung.
4 (High): Performance-fokussiert.
5 (Extreme): Maximale Performance ohne Rücksicht auf Energieaufnahme.
--no-opt
Deaktiviert die IR-Optimierungen (Constant Folding, Dead Code Elimination, etc.). Standardmäßig sind diese aktiv.
4) Debugging & Analyse
Diese Parameter helfen bei der Fehlersuche im Compiler oder bei der Low-Level Analyse des Codes.
| Parameter | Zweck |
|---|---|
| –emit-asm | Gibt den internen Intermediate Representation (IR) Code als lesbaren Pseudo-Assembler aus. Zeigt den Zustand vor und nach den Optimierungen. |
| –dump-relocs | Zeigt die Tabelle der externen Symbole und die berechneten Relocations (PLT/GOT Patches) an. |
| –trace-imports | Debuggt die Modulsuche. Zeigt genau an, in welchen Pfaden der Compiler nach import-Statements sucht. |
5) Linter (Code-Qualität)
Lyx enthält einen integrierten Linter, der den Code auf Stil und potenzielle Fehler prüft, die nicht notwendigerweise Syntaxfehler sind.
–lint: Aktiviert die Linter-Warnungen (z.B. ungenutzte Variablen oder falsche Benennungskonventionen).
–lint-only: Führt nur die Analyse durch und bricht vor der Code-Generierung ab.
–no-lint: (Standard) Deaktiviert alle Linter-Ausgaben.
6) Beispiel-Aufrufe
Für Windows bauen (von Linux aus):
lyxc main.lyx -o game.exe --target=win64
Für einen Raspberry Pi optimieren (Energy-Save):
lyxc sensor.lyx --target=arm64 --target-energy=1
Nur Code-Stil prüfen:
lyxc script.lyx --lint-only
Mit externen Modulen kompilieren:
lyxc app.lyx -I ./libs -I /opt/lyx/packages
