Inhaltsverzeichnis

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