ورود به حساب

نام کاربری گذرواژه

گذرواژه را فراموش کردید؟ کلیک کنید

حساب کاربری ندارید؟ ساخت حساب

ساخت حساب کاربری

نام نام کاربری ایمیل شماره موبایل گذرواژه

برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید


09117307688
09117179751

در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید

دسترسی نامحدود

برای کاربرانی که ثبت نام کرده اند

ضمانت بازگشت وجه

درصورت عدم همخوانی توضیحات با کتاب

پشتیبانی

از ساعت 7 صبح تا 10 شب

دانلود کتاب Learn LLVM 12: A beginner's guide to learning LLVM compiler tools and core libraries with C++

دانلود کتاب یادگیری LLVM 12: راهنمای مبتدیان برای یادگیری ابزارهای کامپایلر LLVM و کتابخانه های هسته با C++

Learn LLVM 12: A beginner's guide to learning LLVM compiler tools and core libraries with C++

مشخصات کتاب

Learn LLVM 12: A beginner's guide to learning LLVM compiler tools and core libraries with C++

ویرایش:  
نویسندگان:   
سری:  
ISBN (شابک) : 1839213507, 9781839213502 
ناشر: Packt Publishing 
سال نشر: 2021 
تعداد صفحات: 392 
زبان: English 
فرمت فایل : EPUB (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) 
حجم فایل: 7 Mb 

قیمت کتاب (تومان) : 51,000



ثبت امتیاز به این کتاب

میانگین امتیاز به این کتاب :
       تعداد امتیاز دهندگان : 6


در صورت تبدیل فایل کتاب Learn LLVM 12: A beginner's guide to learning LLVM compiler tools and core libraries with C++ به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.

توجه داشته باشید کتاب یادگیری LLVM 12: راهنمای مبتدیان برای یادگیری ابزارهای کامپایلر LLVM و کتابخانه های هسته با C++ نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.


توضیحاتی در مورد کتاب یادگیری LLVM 12: راهنمای مبتدیان برای یادگیری ابزارهای کامپایلر LLVM و کتابخانه های هسته با C++



با استفاده از قدرت کتابخانه‌های اصلی LLVM، نحوه ساخت و استفاده از تمام بخش‌های کامپایلرهای دنیای واقعی، از جمله frontend، خط لوله بهینه‌سازی و یک backend جدید را بیاموزید

ویژگی های کلیدی

  • با استفاده موثر از کتابخانه های LLVM قدم به قدم آشنا شوید
  • طراحی سطح بالای کامپایلر LLVM را درک کنید و همان اصول را در کامپایلر خود اعمال کنید
  • li>
  • استفاده از ابزارهای مبتنی بر کامپایلر برای بهبود کیفیت کد در پروژه‌های C

توضیحات کتاب

LLVM برای پر کردن شکاف بین کتاب‌های درسی کامپایلر و توسعه کامپایلر واقعی این یک پایگاه کد مدولار و ابزارهای پیشرفته ای را فراهم می کند که به توسعه دهندگان کمک می کند تا کامپایلرها را به راحتی بسازند. این کتاب مقدمه‌ای عملی برای LLVM ارائه می‌کند، و به تدریج به شما کمک می‌کند تا در هنگام ساخت و کار با کامپایلرها به راحتی در سناریوهای پیچیده حرکت کنید.

شما با پیکربندی، ساخت و نصب کتابخانه‌ها، ابزارهای LLVM شروع می‌کنید. و پروژه های خارجی در مرحله بعد، کتاب شما را با طراحی LLVM و نحوه عملکرد آن در عمل در هر مرحله کامپایلر LLVM آشنا می کند: frontend، optimizer و backend. با استفاده از زیرمجموعه ای از یک زبان برنامه نویسی واقعی به عنوان مثال، می آموزید که چگونه یک فرانت اند توسعه دهید و LLVM IR تولید کنید، آن را به خط لوله بهینه سازی تحویل دهید و کد ماشین را از آن تولید کنید. فصل های بعدی به شما نشان می دهد که چگونه LLVM را با یک پاس جدید گسترش دهید و چگونه انتخاب دستورالعمل در LLVM کار می کند. شما همچنین بر روی مسائل کامپایل Just-in-Time و وضعیت فعلی پشتیبانی از کامپایل JIT که LLVM ارائه می کند تمرکز خواهید کرد، قبل از اینکه در نهایت به درک چگونگی ایجاد یک Backend جدید برای LLVM بپردازید.

توسط در پایان این کتاب LLVM، شما تجربه واقعی در کار با چارچوب توسعه کامپایلر LLVM با کمک مثال‌های عملی و تکه‌های کد منبع کسب خواهید کرد.

آنچه خواهید آموخت

  • پیکربندی، کامپایل و نصب چارچوب LLVM
  • درک نحوه سازماندهی منبع LLVM
  • پیدا کنید که برای استفاده از LLVM در پروژه های خود چه کاری باید انجام دهید< /li>
  • نحوه ساختار یک کامپایلر را کاوش کنید و یک کامپایلر کوچک را پیاده سازی کنید
  • ایجاد LLVM IR برای ساختارهای زبان مبدأ رایج
  • یک خط لوله بهینه سازی تنظیم کنید و آن را برای خود تنظیم کنید. نیازهای شخصی شما
  • توسعه LLVM با پاس‌های تبدیل و ابزارهای صدادار
  • دستورالعمل‌های ماشین جدید و یک پشتیبان کامل را اضافه کنید

این کتاب برای چه کسی است

  • h4>

    این کتاب برای توسعه دهندگان کامپایلر، علاقه مندان و مهندسانی است که با LLVM جدید هستند و علاقه مند به یادگیری در مورد چارچوب LLVM هستند. همچنین برای مهندسین نرم افزار C که به دنبال استفاده از ابزارهای مبتنی بر کامپایلر برای تجزیه و تحلیل و بهبود کد هستند، و همچنین کاربران عادی کتابخانه های LLVM که می خواهند دانش بیشتری در مورد ضروریات LLVM کسب کنند، مفید است. تجربه سطح متوسط ​​با برنامه نویسی C برای درک موثرتر مفاهیم مطرح شده در این کتاب الزامی است.

    فهرست محتوا

    1. نصب LLVM
    2. Touring منبع LLVM
    3. ساختار یک کامپایلر
    4. تبدیل فایل منبع به یک درخت نحو انتزاعی
    5. اصولات تولید IR
    6. IR نسل برای ساختارهای زبان سطح بالا
    7. نسل پیشرفته IR
    8. بهینه سازی IR
    9. انتخاب دستورالعمل
    10. تجمیع JIT
    11. اشکال‌زدایی با استفاده از ابزارهای LLVM
    12. ایجاد Backend خودتان

  • توضیحاتی درمورد کتاب به خارجی

    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 Description

    LLVM 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 for

    This 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.

    Table of Contents

    1. Installing LLVM
    2. Touring the LLVM source
    3. The Structure of a Compiler
    4. Turning the Source File into an Abstract Syntax Tree
    5. Basics of IR Generation
    6. IR Generation for High-Level Language Constructs
    7. Advanced IR Generation
    8. Optimizing IR
    9. Instruction Selection
    10. JIT Compilation
    11. Debugging Using LLVM Tools
    12. Creating Your Own Backend


    فهرست مطالب

    Cover
    Title Page
    Copyright and Credits
    Contributors
    Table of Contents
    Preface
    Section 1 – The Basics of Compiler Construction with LLVM
    Chapter 1: Installing LLVM
    	Getting the prerequisites ready
    		Ubuntu
    		Fedora and RedHat
    		FreeBSD
    		OS X
    		Windows
    		Configuring Git
    	Building with CMake
    		Cloning the repository
    		Creating a build directory
    		Generating the build system files
    	Customizing the build process
    		Variables defined by CMake
    		Variables defined by LLVM
    	Summary
    Chapter 2: Touring the LLVM Source
    	Technical requirements
    	Contents of the LLVM mono repository
    		LLVM core libraries and additions
    		Compilers and tools
    		Runtime libraries
    	Layout of an LLVM project
    	Creating your own project using LLVM libraries
    		Creating the directory structure
    		Adding the CMake files
    		Adding the C++ source files
    		Compiling the tinylang application
    	Targeting a different CPU architecture
    	Summary
    Chapter 3: Structure of a Compiler
    	Technical requirements
    	Building blocks of a compiler
    	An arithmetic expression language
    		Formalism for specifying the syntax of a programming language
    		How grammar helps the compiler writer
    	Lexical analysis
    		A handwritten lexer
    	Syntactical analysis
    		A handwritten parser
    		The abstract syntax tree
    	Semantic analysis
    	Generating code with the LLVM backend
    		Textual representation of the LLVM IR
    		Generating the IR from the AST
    		The missing pieces – the driver and the runtime library
    	Summary
    Section 2 – From Source to Machine Code Generation
    Chapter 4: Turning the Source File into an Abstract Syntax Tree
    	Technical requirements
    	Defining a real programming language
    	Creating the project layout
    	Managing source files and user messages
    	Structuring the lexer
    	Constructing a recursive descent parser
    	Generating a parser and lexer with bison and flex
    	Performing semantic analysis
    		Handling the scope of names
    		Using LLVM-style RTTI for the AST
    		Creating the semantic analyzer
    	Summary
    Chapter 5: Basics of IR Code Generation
    	Technical requirements
    	Generating IR from the AST
    		Understanding the IR code
    		Knowing the load-and-store approach
    		Mapping the control flow to basic blocks
    	Using AST numbering to generate IR code in SSA form
    		Defining the data structure to hold values
    		Reading and writing values local to a basic block
    		Searching the predecessor blocks for a value
    		Optimizing the generated phi instructions
    		Sealing a block
    		Creating IR code for expressions
    		Emitting the IR code for a function
    		Controlling visibility with linkage and name mangling
    		Converting types from an AST description to LLVM types
    		Creating the LLVM IR function
    		Emitting the function body
    	Setting up the module and the driver
    		Wrapping everything in the code generator
    		Initializing the target machine class
    		Emitting assembler text and object code
    	Summary
    Chapter 6: IR Generation for High-Level Language Constructs
    	Technical requirements
    	Working with arrays, structs, and pointers
    	Getting the application binary interface right
    	Creating IR code for classes and virtual functions
    		Implementing single inheritance
    		Extending single inheritance with interfaces
    		Adding support for multiple inheritance
    	Summary
    Chapter 7: Advanced IR Generation
    	Technical requirements
    	Throwing and catching exceptions
    		Raising an exception
    		Catching an exception
    		Integrating the exception-handling code into the application
    	Generating metadata for type-based alias analysis
    		Understanding the need for additional metadata
    		Adding TBAA metadata to tinylang
    	Adding debug metadata
    		Understanding the general structure of debug metadata
    		Tracking variables and their values
    		Adding line numbers
    		Adding debug support to tinylang
    	Summary
    Chapter 8: Optimizing IR
    	Technical requirements
    	Introducing the LLVM Pass manager
    	Implementing a Pass using the new Pass manager
    		Adding a Pass to the LLVM source tree
    		Adding a new Pass as a plugin
    	Adapting a Pass for use with the old Pass manager
    	Adding an optimization pipeline to your compiler
    		Creating an optimization pipeline with the new Pass manager
    		Extending the Pass pipeline
    	Summary
    Section 3 – Taking LLVM to the Next Level
    Chapter 9: Instruction Selection
    	Technical requirements
    	Understanding the LLVM target backend structure
    	Using MIR to test and debug the backend
    	How instruction selection works
    		Specifying the target description in the TableGen language
    		Instruction selection with the selection DAG
    		Fast instruction selection – FastISel
    		The new global instruction selection – GlobalISel
    	Supporting new machine instructions
    		Adding a new instruction to the assembler and code generation
    		Testing the new instruction
    	Summary
    Chapter 10: JIT Compilation
    	Technical requirements
    	Getting an overview of LLVM's JIT implementation and use cases
    	Using JIT compilation for direct execution
    		Exploring the lli tool
    		Implementing our own JIT compiler with LLJIT
    		Building a JIT compiler class from scratch
    	Utilizing a JIT compiler for code evaluation
    		Identifying the language semantics
    	Summary
    Chapter 11: Debugging Using LLVM Tools
    	Technical requirements
    	Instrumenting an application with sanitizers
    		Detecting memory access problems with the address sanitizer
    		Finding uninitialized memory access with the memory sanitizer
    		Pointing out data races with the thread sanitizer
    	Finding bugs with libFuzzer
    		Limitations and alternatives
    	Performance profiling with XRay
    	Checking the source with the Clang Static Analyzer
    		Adding a new checker to the Clang Static Analyzer
    	Creating your own Clang-based tool
    	Summary
    Chapter 12: Create Your Own Backend
    	Technical requirements
    	Setting the stage for a new backend
    	Adding the new architecture to the Triple class
    	Extending the ELF file format definition in LLVM
    	Creating the target description
    		Implementing the top-level file of the target description
    		Adding the register definition
    		Defining the calling convention
    		Creating the scheduling model
    		Defining the instruction formats and the instruction information
    	Implementing the DAG instruction selection classes
    		Initializing the target machine
    		Adding the selection DAG implementation
    		Supporting target-specific operations
    		Configuring the target lowering
    	Generating assembler instructions
    	Emitting machine code
    	Adding support for disassembling
    	Piecing it all together
    	Summary
    Other Books You May Enjoy
    Index




    نظرات کاربران