Die "Low Level Virtual Machine" Compiler-Infrastruktur
LLVM (Low Level Virtual Machine) steht für eine neue Infrastruktur für Compiler, die sich anschickt, der GNU Compiler Collection (gcc) Konkurrenz zu machen. Es stellt eine umfangreiche Modulsammlung bereit, aus der sich Entwickler bedienen können, um performante Compiler für neue oder existierende Programmiersprachen zu erzeugen. Im Gespräch mit Tim Pritlove erläutert Tim Sander von seinen Erfahrungen mit dem System. Zur Sprache kommen die Architektur der LLVM-Infrastruktur, bislang existierende Frontends und Backends, Lizenz und Anwendungsfälle von LLVM.
Tim Pritlove
Twitter
@[email protected]
Website
Spenden via PayPal
Tim Sander
Website
Max Merz
(Shownotes)
Pinboard
Twitter
Shownotes
IntroJon StewartCRE IntroBegrüßungTim ist immer noch auf ReisenLLVM (Low Level Virtual Machine)Tim SanderTU DarmstadtHardware Software Co-DesignCompilerBusMultiplexerCPURegistersatzPipelineGCCAnwendungsfälle für Hardware Software Co-DesignKoprozessorFPGAFehlertoleranzGrundlagenforschungGrafikkarteMoore’s LawTransistorParallelisierungLLVM ÜberblickGCCThe LLVM Compiler InfrastructureLLVM ist modular aufgebautGeschichte von LLVMLifelong OptimizationJIT-Compilation (“JITing”)SkriptsprachenInterpreterBytecodeMaschinencodeDynamische TypisierungJavascriptKomponenten von LLVMllvmc (LLVM Compiler Driver)LLVM FrontendGCC-FrontendBrainfuckZwischencodeStatic Single AssignmentsGCC hat mit Version 4 auf SSA umgestelltAlle LLVM-Optimierungsläufe laufen auf der internen BeschreibungsspracheParserJavaCC++FortranObjective-CGPLLLVM LizenzUniversity of Illinois/NCSA Open Source LicenseBSDAndere FrontendsclangWikipediaProjekt-HomepageAssemblerLLVM MiddlewareOptimierungsläufeDead Code eliminationLLVM BackendBeschreibung der Ziel-MaschineVon-Neumann-ArchitekturHarvard-Architekturx86ADM64ARMPowerPCVektorrechnerSIMD (Single Instruction, Multiple Data)OpenGLShaderZusammenfassungVergleich zum GCCJava VMLLVM und GCC setzen auf Static Single Assignments aufUnterschiede liegen in der ImplementierungLLVM DokumentationSoftwarearchitekturGCC GimpleGCC RTL“Gnade der späten Geburt”LLVM ZwischenspracheDie Operationen sind ähnlich zu AssemblerRegisterIn SSA ist jeder Datenplatz ein-eindeutigModulgröße im BackendCompilezeitenFehlermeldungen von clangApple und clangChris LattnerMutmaßungen zur Strategie von AppleFehlermeldungenCompilezeitenJIT-KompilierungZwischensprache ist sehr kompakt und kann mitgespeichert werdenParallelisierungMultiple CoresSIMD (Single Instruction, Multiple Data)Parallelisierung des Compile-VorgangsParallelisierung des produzierten CodesFlynnsche KlassifikationAltiVecSSEDynamische TypisierungSkriptspracheRuntimePraktische AnwendungWo kommt LLVM schon zum Einsatz?Adobe FlashLLVM Developer Meeting 2008Vortrag von Scott PetersenVortragsfolienVideo HiVideo LoRessourcenLLVM Developer MeetingsVortrag von Tim SanderVortragsfolienVideo HiVideo LoGoogle Tech Talk: Chris Lattner: LLVM 2.0LLVM Developer Meeting 2008DoxygenLLVM Doxygen DokumentationLLVM Online CompilerFür wen ist LLVM interessant?Sample FrontendTims OptimierungslaufMacht Spaß in der ForschungCompilerbau“Und dann kam die Aussage: ‘Compilerbau ist doch tot, da entwickelt sich doch nichts mehr.’” (Tim Sander)“Und für jemanden, der Informatik studiert und noch ein schönes Diplomthema braucht wäre das dann vielleicht auch der richtige Sandkasten, in den man sich mal reinsetzt um mal ordentlich mit Sand zu werfen.” (Tim Pritlove)AbschlussCRE Outro