====== Lyx Compiler – CLI Referenz ====== Der Lyx-Compiler (lyxc) wird über die Kommandozeile gesteuert. Er folgt dem klassischen Muster: \ lyxc [Optionen] ===== 1) Basis-Operationen ===== ^ Parameter ^ Beschreibung ^ | -o | Definiert den Namen der Ausgabedatei. Standardmäßig a.out (Linux/macOS) oder a.exe (Windows). | | -I | Fügt einen Include-Pfad hinzu. Der Compiler sucht dort nach Modulen/Units. Kann mehrfach angegeben werden. | | --std-path= | Ü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= ==== 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= ==== 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