
Book "Getting Started with LLVM Core Libraries" Released
I think for many, as well as for me, the book Getting Started with LLVM Core Libraries will seem interesting. This is the first book devoted entirely to LLVM. Basically, as the name implies, it is aimed at beginners who have just turned their attention to LLVM but already have experience in C ++ programming.
Chapter 1. Assembly and installation of LLVM. describes the installation of Clang / LLVM on Linux, Windows, Mac (with a description of how to build this library on Visual Studio and Xcode). It also discusses the question of what and when to choose - download the already compiled binary files, use the package manager, or compile the source code yourself.
Chapter 2. External projects.Describes projects that are not part of the library core. For example: additional Clang utilities, DragonEgg - a plugin for GCC, the LLDB debugger and the LLVM test suite.
Chapter 3. Tools and architecture of the project. Explains how various components interact in LLVM. Provides an example of step-by-step translation from source to assembler. It also describes how the compiler driver works and, finally, how to write your first utility using LLVM.
Chapter 4. The compiler . Describes the Clang project tools and how to write a utility that uses these tools.
Chapter 5. Interim presentation of LLVM.Describes one of the most important parts of LLVM - intermediate representation code (IR). It describes its syntax, structure, which makes it so important and how to write a program that produces such code.
Chapter 6. Machine code generator. Describes the LLVM part responsible for generating machine code from IR. It provides enough information to create your own generator.
Chapter 7. The Just-in-Time (JIT) Compiler. The LLVM tools that provide JIT compilation are described, and an example of creating your own JIT compiler is provided.
Chapter 8. Cross-platform compilation.An explanation is given of how to use Clang / LLVM to create a program designed to run on other platforms (for example, on ARM). The environment setting for such compilation is described.
Chapter 9. Clang Static Analyzer . This analyzer is described and ways to expand its functionality with its utilities.
Chapter 10. LibTooling library. This library (framework) is described, which allows you to refractor source code. It also describes an example of creating your own code refractoring utility based on LibTooling.
At the time of writing (August 2014), LLVM 3.5 was not yet released, so all the examples were done for LLVM 3.4. However, the authors promise over time to make an addition (free) to the book, translate all the examples on LLVM 3.5 and post it on the publisher’s website.
Briefly about the authors:
Bruno Cordoso Lopes - participated in the development of LLVM since 2007. Inside this project, he participated in the development of the MIPS code generator, support for x86 AVX, and the improvement of assembler code for ARM.
Rafael Auler - did not directly participate in the development of LLVM. However, his PhD studies are associated with LLVM.
The list of reviewers includes people known in LLVM (such as Eli Bendersky), Lattner’s absence grieves, but he is apparently very busy. In general, the book is easy to read. It does not hurt, and often helps, those who want to start using LLVM.
Chapter 1. Assembly and installation of LLVM. describes the installation of Clang / LLVM on Linux, Windows, Mac (with a description of how to build this library on Visual Studio and Xcode). It also discusses the question of what and when to choose - download the already compiled binary files, use the package manager, or compile the source code yourself.
Chapter 2. External projects.Describes projects that are not part of the library core. For example: additional Clang utilities, DragonEgg - a plugin for GCC, the LLDB debugger and the LLVM test suite.
Chapter 3. Tools and architecture of the project. Explains how various components interact in LLVM. Provides an example of step-by-step translation from source to assembler. It also describes how the compiler driver works and, finally, how to write your first utility using LLVM.
Chapter 4. The compiler . Describes the Clang project tools and how to write a utility that uses these tools.
Chapter 5. Interim presentation of LLVM.Describes one of the most important parts of LLVM - intermediate representation code (IR). It describes its syntax, structure, which makes it so important and how to write a program that produces such code.
Chapter 6. Machine code generator. Describes the LLVM part responsible for generating machine code from IR. It provides enough information to create your own generator.
Chapter 7. The Just-in-Time (JIT) Compiler. The LLVM tools that provide JIT compilation are described, and an example of creating your own JIT compiler is provided.
Chapter 8. Cross-platform compilation.An explanation is given of how to use Clang / LLVM to create a program designed to run on other platforms (for example, on ARM). The environment setting for such compilation is described.
Chapter 9. Clang Static Analyzer . This analyzer is described and ways to expand its functionality with its utilities.
Chapter 10. LibTooling library. This library (framework) is described, which allows you to refractor source code. It also describes an example of creating your own code refractoring utility based on LibTooling.
At the time of writing (August 2014), LLVM 3.5 was not yet released, so all the examples were done for LLVM 3.4. However, the authors promise over time to make an addition (free) to the book, translate all the examples on LLVM 3.5 and post it on the publisher’s website.
Briefly about the authors:
Bruno Cordoso Lopes - participated in the development of LLVM since 2007. Inside this project, he participated in the development of the MIPS code generator, support for x86 AVX, and the improvement of assembler code for ARM.
Rafael Auler - did not directly participate in the development of LLVM. However, his PhD studies are associated with LLVM.
The list of reviewers includes people known in LLVM (such as Eli Bendersky), Lattner’s absence grieves, but he is apparently very busy. In general, the book is easy to read. It does not hurt, and often helps, those who want to start using LLVM.