Getting started with LLVM core libraries get to grips with LLVM essentials and use the core libraries to build advanced tools

This book is intended for enthusiasts, computer science students, and compiler engineers interested in learning about the LLVM framework. You need a background in C++ and, although not mandatory, should know at least some compiler theory. Whether you are a newcomer or a compiler expert, this book pr...

Descripción completa

Detalles Bibliográficos
Otros Autores: Lopes, Bruno Cardoso, author (author), Auler, Rafael, author (cover designer), Sawant, Aniket, cover designer
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham, England : Packt Publishing Ltd 2014.
Edición:1st edition
Colección:Community experience distilled.
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009628218306719
Tabla de Contenidos:
  • ""Cover""; ""Copyright""; ""Credits""; ""About the Authors""; ""About the Reviewers""; ""www.PacktPub.com""; ""Table of Contents""; ""Preface""; ""Chapter 1: Build and Install LLVM""; ""Understanding LLVM versions""; ""Obtaining prebuilt packages""; ""Obtaining the official prebuilt binaries""; ""Using package managers""; ""Staying updated with snapshot packages""; ""Building from sources""; ""System requirements""; ""Obtaining sources""; ""SVN""; ""Git""; ""Building and installing LLVM""; ""Using the autotools-generated configure script""; ""Using CMake and Ninja""
  • ""Using other Unix approaches""""Windows and Microsoft Visual Studio""; ""Mac OS X and Xcode""; ""Summary""; ""Chapter 2: External Projects""; ""Introducing Clang extras""; ""Building and installing Clang extra tools""; ""Understanding Compiler-RT""; ""Seeing Compiler-RT in action""; ""Using the DragonEgg plugin""; ""Building DragonEgg""; ""Understanding the compilation pipeline with DragonEgg and LLVM tools""; ""Understanding the LLVM test suite""; ""Using LLDB""; ""Exercising a debug session with LLDB""; ""Introducing the libc++ standard library""; ""Summary""
  • ""Chapter 3: Tools and Design""""Introducing LLVM's basic design principles and its history""; ""Understanding LLVM today""; ""Interacting with the compiler driver""; ""Using standalone tools""; ""Delving into the LLVM internal design""; ""Getting to know LLVM's basic libraries""; ""Introducing LLVM's C++ practices""; ""Seeing polymorphism in practice""; ""Introducing C++ templates in LLVM""; ""Enforcing C++ best practices in LLVM""; ""Making string references lightweight in LLVM""; ""Demonstrating the pluggable pass interface""; ""Writing your first LLVM project""; ""Writing the Makefile""
  • ""Writing the code""""Navigating the LLVM source â€? general advice""; ""Understanding the code as a documentation""; ""Asking the community for help""; ""Coping with updates â€? using the SVN log as a documentation""; ""Concluding remarks""; ""Summary""; ""Chapter 4: The Frontend""; ""Introducing Clang""; ""Frontend actions""; ""Libraries""; ""Using libclang""; ""Understanding Clang diagnostics""; ""Reading diagnostics""; ""Learning the frontend phases with Clang""; ""Lexical analysis""; ""Exercising lexical errors""; ""Writing libclang code that uses the lexer""; ""Preprocessing""
  • ""Syntactic analysis""""Understanding Clang AST nodes""; ""Understanding the parser actions with a debugger""; ""Exercising a parser error""; ""Writing code that traverses the Clang AST""; ""Serializing the AST with precompiled headers""; ""Semantic analysis""; ""Exercising a semantic error""; ""Generating the LLVM IR code""; ""Putting it together""; ""Summary""; ""Chapter 5: The LLVM Intermediate Representation""; ""Overview""; ""Understanding the LLVM IR target dependency""; ""Exercising basic tools to manipulate the IR formats""; ""Introducing the LLVM IR language syntax""
  • ""Introducing the LLVM IR in-memory model""