Seminar LLVM Backend-Entwicklung mit TableGen und Code Generation

Das Seminar behandelt die technische Struktur eines LLVM-Backends von der Target-Registrierung bis zur Ausgabe von Maschinencode oder Assembler. Die Themen werden an einem didaktischen Zielsystem erklärt, damit Registermodell, Instruktionsbeschreibung und Codegen-Pipeline transparent nachvollzogen werden können.

Die Dauer von fünf Tagen ist erforderlich, weil Backend-Entwicklung mehrere gekoppelte Teilsysteme umfasst: TargetMachine, TableGen, SelectionDAG oder GlobalISel, Machine IR, Register Allocation, Scheduling, MC-Schicht und Tests. Die Übungen bauen deshalb in kleinen Schritten ein konsistentes Backend-Verständnis auf.

Kapitel 1: Target-Struktur und TableGen-Grundlagen

Inhaltsverzeichnis

  • TargetMachine und Subtarget-Modell
  • Registerklassen und Instruktionsformate
  • TableGen-Dateien strukturieren

Schritt 1: Target registrieren

Die grundlegenden Target-Komponenten werden eingeordnet: TargetInfo, TargetMachine, Subtarget, InstrInfo, RegisterInfo und FrameLowering. Zuständigkeiten und Initialisierungsreihenfolge werden getrennt betrachtet.

Schritt 2: Registermodell beschreiben

Register, Registerklassen, Aliase und Reservierungen werden modelliert. Dabei werden spätere Auswirkungen auf Register Allocation und Calling Convention berücksichtigt.

Schritt 3: Instruktionen formulieren

Instruktionsformate und einzelne Instruktionen werden in TableGen beschrieben. Operanden, Constraints, Assembler-Strings und Pattern werden schrittweise ergänzt.

Kapitel 2: Instruction Selection und Machine IR

Inhaltsverzeichnis

  • IR bis Machine IR nachvollziehen
  • SelectionDAG und GlobalISel einordnen
  • Legalisierung und Pattern Matching

Schritt 1: Codegen-Pipeline verfolgen

Ein kleines LLVM-IR-Beispiel wird durch die Codegen-Pipeline geführt. Die Zwischenstände werden gelesen und die Rolle von Legalization, Combining und Selection wird getrennt betrachtet.

Schritt 2: Selektionsmuster ergänzen

Einfache arithmetische und Speicheroperationen werden auf Zielinstruktionen abgebildet. Nicht unterstützte Operationen werden durch Expansion oder Custom Lowering behandelt.

Schritt 3: Machine IR prüfen

Ausgewählte Machine-Instruktionen werden inspiziert. Def-Use-Beziehungen, virtuelle Register, Basic Blocks und frühe Optimierungen werden analysiert.

Kapitel 3: Register, Stack und Calling Convention

Inhaltsverzeichnis

  • Register Allocation vorbereiten
  • Frame Lowering und Stack Layout
  • Funktionsaufrufe und ABI-Regeln

Schritt 1: Registerdruck analysieren

Virtuelle Register werden bis zur Allokation verfolgt. Spill-Situationen, Kopierinstruktionen und Registerklassen-Konflikte werden anhand kleiner Beispiele ausgewertet.

Schritt 2: Stack-Frame aufbauen

Prolog, Epilog, Stack-Objekte und Frame-Indizes werden betrachtet. Die Implementierung wird mit einfachen Funktionen, lokalen Variablen und Call-Szenarien geprüft.

Schritt 3: Aufrufkonvention definieren

Argumente, Rückgabewerte und Call-Clobbered-Register werden beschrieben. Danach wird überprüft, ob erzeugter Code konsistent mit den ABI-Annahmen bleibt.

Kapitel 4: Assembler, MC-Schicht und Tests

Inhaltsverzeichnis

  • Assembler-Ausgabe und Disassembler-Grundlagen
  • MCInstrInfo und Kodierung
  • lit-Tests und FileCheck-Strategien

Schritt 1: Assembler-Ausgabe erzeugen

Instruktionen werden in lesbare Assemblerform gebracht. Formatierungsregeln, Operandenreihenfolge und symbolische Referenzen werden abgestimmt.

Schritt 2: Kodierung nachvollziehen

Die MC-Schicht wird als Brücke zwischen Instruktionsmodell und Objektcode eingeordnet. Kodierungsfelder werden geprüft und mit erwarteten Bytefolgen verglichen.

Schritt 3: Regressionstests aufbauen

Tests werden für IR-zu-Assembler, Machine IR und negative Fälle strukturiert. FileCheck-Muster werden so geschrieben, dass sie robust gegen irrelevante Änderungen bleiben.

Fachbereichsleitung / Trainerleitung / Ansprechpartner

Seminardetails

   
Dauer: 5 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage 09:00 Uhr
Preis: Öffentlich oder Live Stream: € 2.995 zzgl. MwSt.
Inhaus: € 8.500 zzgl. MwSt.
Teilnehmeranzahl: min. 2 - max. 8
Teilnehmerkreis: Compiler-Entwicklung, Embedded-Teams, Prozessor- und Plattformentwicklung, Toolchain-Verantwortliche
Voraussetzungen: Gute C++-Kenntnisse, Verständnis von Assembler, ABI-Grundlagen und Compiler-Zwischendarstellungen
Standorte: Live-Online, Firmenstandort, Schulungszentrum
Unterlagen: Seminarunterlagen, Übungen, Beispielprojekte

Seminartermine

Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.

Seminar Startdatum Enddatum Ort Dauer
Klagenfurt 5 Tage
Bregenz 5 Tage
Linz 5 Tage
Salzburg 5 Tage
Graz 5 Tage
Wien 5 Tage
Inhaus / Firmenseminar 5 Tage
Stream live 5 Tage
Innsbruck 5 Tage
Stream gespeichert 5 Tage
Inhaus / Firmenseminar 5 Tage
Stream live 5 Tage
Innsbruck 5 Tage
Stream gespeichert 5 Tage
Klagenfurt 5 Tage
Bregenz 5 Tage
Linz 5 Tage
Salzburg 5 Tage
Graz 5 Tage
Wien 5 Tage
Graz 5 Tage
Wien 5 Tage
Stream live 5 Tage
Inhaus / Firmenseminar 5 Tage
Stream gespeichert 5 Tage
Innsbruck 5 Tage
Klagenfurt 5 Tage
Bregenz 5 Tage
Linz 5 Tage
Salzburg 5 Tage
Linz 5 Tage
Salzburg 5 Tage
Graz 5 Tage
Wien 5 Tage
Inhaus / Firmenseminar 5 Tage
Stream live 5 Tage
Innsbruck 5 Tage
Stream gespeichert 5 Tage
Klagenfurt 5 Tage
Bregenz 5 Tage
Nach oben
Seminare als Stream SRI zertifiziert
© 2026 www.seminar-experts.at All rights reserved.  | Kontakt | Impressum | Nach oben