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.
Seminar und Anbieter vergleichen
Öffentliche Schulung
Diese Seminarform ist auch als Präsenzseminar bekannt und bedeutet, dass Sie in unseren Räumlichkeiten von einem Trainer vor Ort geschult werden. Jeder Teilnehmer hat einen Arbeitsplatz mit virtueller Schulungsumgebung. Öffentliche Seminare werden in deutscher Sprache durchgeführt, die Unterlagen sind teilweise in Englisch.
Inhausschulung
Diese Seminarform bietet sich für Unternehmen an, welche gleichzeitig mehrere Teilnehmer gleichzeitig schulen möchten. Der Trainer kommt zu Ihnen ins Haus und unterrichtet in Ihren Räumlichkeiten. Diese Seminare können auf Deutsch – bei Firmenseminaren ist auch Englisch möglich – gebucht werden.
Webinar
Diese Art der Schulung ist geeignet, wenn Sie die Präsenz eines Trainers nicht benötigen, nicht reisen können und über das Internet an einer Schulung teilnehmen möchten.
Fachbereichsleitung / Trainerleitung / Ansprechpartner
-

Lucas Beich
Telefon: + 49 (221) 74740055
E-Mail: lucas.beich@seminar-experts.de -

Paul Goldschmidt
Telefon: + 49 (221) 74740055
E-Mail: paul.goldschmidt@seminar-experts.de
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.
