|
|
Books > Computing & IT > Computer programming > Compilers & interpreters
Learn how you can build the next big programming language,
compiler, or source code analyzer using LLVM and Clang Key Features
Explore Clang, LLVM's middle-end and backend, in a pragmatic way
Develop your LLVM skillset and get to grips with a variety of
common use cases Engage with real-world LLVM development through
various coding examples Book DescriptionEvery programmer or
engineer, at some point in their career, works with compilers to
optimize their applications. Compilers convert a high-level
programming language into low-level machine-executable code. LLVM
provides the infrastructure, reusable libraries, and tools needed
for developers to build their own compilers. With LLVM's extensive
set of tooling, you can effectively generate code for different
backends as well as optimize them. In this book, you'll explore the
LLVM compiler infrastructure and understand how to use it to solve
different problems. You'll start by looking at the structure and
design philosophy of important components of LLVM and gradually
move on to using Clang libraries to build tools that help you
analyze high-level source code. As you advance, the book will show
you how to process LLVM IR - a powerful way to transform and
optimize the source program for various purposes. Equipped with
this knowledge, you'll be able to leverage LLVM and Clang to create
a wide range of useful programming language tools, including
compilers, interpreters, IDEs, and source code analyzers. By the
end of this LLVM book, you'll have developed the skills to create
powerful tools using the LLVM framework to overcome different
real-world challenges. What you will learn Find out how LLVM's
build system works and how to reduce the building resource Get to
grips with running custom testing with LLVM's LIT framework Build
different types of plugins and extensions for Clang Customize
Clang's toolchain and compiler flags Write LLVM passes for the new
PassManager Discover how to inspect and modify LLVM IR Understand
how to use LLVM's profile-guided optimizations (PGO) framework
Create custom compiler sanitizers Who this book is forThis book is
for software engineers of all experience levels who work with LLVM.
If you are an academic researcher, this book will help you learn
useful LLVM skills in a short time and enable you to build your
prototypes and projects quickly. Programming language enthusiasts
will also find this book useful for building a new programming
language with the help of LLVM.
Write comprehensive, professional-standard CMake projects and
ensure the quality and simplicity of your solutions Purchase of the
print or Kindle book includes a free eBook in the PDF format Key
Features Understand and automate compilation and linking with CMake
Manage internal and external dependencies easily Add quality checks
and tests as an inherent step for your builds Book
DescriptionCreating top-notch software is an extremely difficult
undertaking. Developers researching the subject have difficulty
determining which advice is up to date and which approaches have
already been replaced by easier, better practices. At the same
time, most online resources offer limited explanation, while also
lacking the proper context and structure. This book offers a
simpler, more comprehensive, experience as it treats the subject of
building C++ solutions holistically. Modern CMake for C++ is an
end-to-end guide to the automatization of complex tasks, including
building, testing, and packaging. You'll not only learn how to use
the CMake language in CMake projects, but also discover what makes
them maintainable, elegant, and clean. The book also focuses on the
structure of source directories, building targets, and packages. As
you progress, you'll learn how to compile and link executables and
libraries, how those processes work, and how to optimize builds in
CMake for the best results. You'll understand how to use external
dependencies in your project - third-party libraries, testing
frameworks, program analysis tools, and documentation generators.
Finally, you'll get to grips with exporting, installing, and
packaging for internal and external purposes. By the end of this
book, you'll be able to use CMake confidently on a professional
level. What you will learn Understand best practices for building
C++ code Gain practical knowledge of the CMake language by focusing
on the most useful aspects Use cutting-edge tooling to guarantee
code quality with the help of tests and static and dynamic analysis
Discover how to manage, discover, download, and link dependencies
with CMake Build solutions that can be reused and maintained in the
long term Understand how to optimize build artifacts and the build
process itself Who this book is forThe book is for build engineers
and software developers with knowledge of C/C++ programming who are
looking to learn CMake to automate the process of building small
and large software solutions. If you are someone who's just getting
started with CMake, a long-time GNU Make user, or simply looking to
brush up on the latest best practices, this book is for you.
Learn how to build and use all parts of real-world compilers,
including the frontend, optimization pipeline, and a new backend by
leveraging the power of LLVM core libraries Key Features Get to
grips with effectively using LLVM libraries step-by-step Understand
LLVM compiler high-level design and apply the same principles to
your own compiler Use compiler-based tools to improve the quality
of code in C++ projects Book DescriptionLLVM was built to bridge
the gap between compiler textbooks and actual compiler development.
It provides a modular codebase and advanced tools which help
developers to build compilers easily. This book provides a
practical introduction to LLVM, gradually helping you navigate
through complex scenarios with ease when it comes to building and
working with compilers. You'll start by configuring, building, and
installing LLVM libraries, tools, and external projects. Next, the
book will introduce you to LLVM design and how it works in practice
during each LLVM compiler stage: frontend, optimizer, and backend.
Using a subset of a real programming language as an example, you
will then learn how to develop a frontend and generate LLVM IR,
hand it over to the optimization pipeline, and generate machine
code from it. Later chapters will show you how to extend LLVM with
a new pass and how instruction selection in LLVM works. You'll also
focus on Just-in-Time compilation issues and the current state of
JIT-compilation support that LLVM provides, before finally going on
to understand how to develop a new backend for LLVM. By the end of
this LLVM book, you will have gained real-world experience in
working with the LLVM compiler development framework with the help
of hands-on examples and source code snippets. What you will learn
Configure, compile, and install the LLVM framework Understand how
the LLVM source is organized Discover what you need to do to use
LLVM in your own projects Explore how a compiler is structured, and
implement a tiny compiler Generate LLVM IR for common source
language constructs Set up an optimization pipeline and tailor it
for your own needs Extend LLVM with transformation passes and clang
tooling Add new machine instructions and a complete backend Who
this book is forThis book is for compiler developers, enthusiasts,
and engineers who are new to LLVM and are interested in learning
about the LLVM framework. It is also useful for C++ software
engineers looking to use compiler-based tools for code analysis and
improvement, as well as casual users of LLVM libraries who want to
gain more knowledge of LLVM essentials. Intermediate-level
experience with C++ programming is mandatory to understand the
concepts covered in this book more effectively.
|
|