کتاب Learn LLVM 17, 2nd Edition: A beginner’s guide to learning LLVM compiler tools and core libraries with C++ (آموزش LLVM 17، نسخه دوم: راهنمای مبتدی برای یادگیری ابزارهای کامپایلر LLVM و کتابخانههای هسته با C++) راهنمای مبتدیان برای یادگیری ابزارهای کامپایلر LLVM و کتابخانههای اصلی با C++”، منبعی مقدماتی و کاربردی برای کسانی است که علاقهمند به فراگیری اکوسیستم LLVM و نحوه بهرهگیری از آن در پروژههای C++ هستند.
این کتاب با ارائهی مروری بر مفاهیم کلیدی و ویژگیهای LLVM، دانشآموزان را قادر میسازد تا با فناوریهای پیشرفته کامپایلر و بهینهسازی کد آشنا شده و مهارتهای لازم برای استفاده از این ابزارها در پروژههای مبتنی بر C++ را توسعه دهند.
در ادامه مقدمهای از کتاب Learn LLVM 17 را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Learn LLVM 17:
ساخت کامپایلر یک کار پیچیده و جذاب است. پروژه LLVM اجزای قابل استفاده مجدد را برای کامپایلر شما فراهم میکند و کتابخانههای هسته LLVM یک تولیدکننده کد بهینهسازی کلاس جهانی را پیادهسازی میکنند که یک نمایش میانی مستقل از زبان مبدأ از کد ماشین را برای همه معماریهای CPU محبوب ترجمه میکند. کامپایلرهای بسیاری از زبانهای برنامهنویسی در حال حاضر از فناوری LLVM بهره میبرند.
کتاب Learn LLVM 17 به شما می آموزد که چگونه کامپایلر خود را پیاده سازی کنید و چگونه از LLVM برای دستیابی به آن استفاده کنید. شما یاد خواهید گرفت که چگونه قسمت جلویی یک کامپایلر کد منبع را به یک درخت نحو انتزاعی تبدیل میکند و چگونه میتوان نمایش متوسط (IR) را از آن تولید کرد. علاوه بر این، اضافه کردن یک خط لوله بهینه سازی به کامپایلر خود را نیز بررسی خواهید کرد که به شما امکان میدهد IR را به کد ماشین عملکردی کامپایل کنید.
چارچوب LLVM را میتوان به روشهای مختلفی گسترش داد و شما یاد خواهید گرفت که چگونه پاسهای جدید و حتی یک Backend کاملا جدید به LLVM اضافه کنید. موضوعات پیشرفته مانند کامپایل کردن برای یک معماری CPU متفاوت و گسترش صدای صدای زنگ و تحلیلگر استاتیک صدای زنگ با پلاگینها و چکرهای خود نیز پوشش داده شده است. کتاب Learn LLVM 17 از یک رویکرد عملی پیروی میکند و با کد منبع نمونه ای همراه است که استفاده از دانش به دست آمده را در پروژههای خود آسان میکند.
بیشتر بخوانید: کتاب Professional C++
آنچه در این نسخه جدید است:
کتاب Learn LLVM 17 اکنون دارای فصل جدیدی است که به معرفی مفهوم و نحو زبان TableGen مورد استفاده در LLVM اختصاص یافته است، که در آن خوانندگان میتوانند برای تعریف کلاسها، رکوردها و کل باطن LLVM استفاده کنند.
علاوه بر این، کتاب Learn LLVM 17 همچنین تاکیدی بر توسعه باطن ارائه میکند، که مفاهیم مختلف باطنی جدید را که میتوان برای یک باطن LLVM پیادهسازی کرد، مانند اجرای چارچوب دستورالعمل GlobalISel و توسعه پاسهای عملکرد ماشین، مورد بحث قرار میدهد.
کتاب Learn LLVM 17 برای چه کسی است؟
این کتاب برای توسعه دهندگان کامپایلر، علاقه مندان و مهندسانی است که علاقه مند به یادگیری در مورد چارچوب LLVM هستند. همچنین برای مهندسین نرم افزار ++C که به دنبال استفاده از ابزارهای مبتنی بر کامپایلر برای تجزیه و تحلیل و بهبود کد هستند، و همچنین برای کاربران معمولی کتابخانههای LLVM که میخواهند دانش بیشتری در مورد ضروریات LLVM کسب کنند، مفید است. تجربه سطح متوسط با برنامه نویسی C++ برای درک موثرتر مفاهیم مطرح شده در این کتاب الزامی است.
آنچه کتاب Learn LLVM 17 پوشش میدهد:
فصل 1، نصب LLVM، نحوه راه اندازی و استفاده از محیط توسعه خود را توضیح میدهد. در پایان فصل، شما کتابخانههای LLVM را کامپایل کرده و یاد خواهید گرفت که چگونه فرآیند ساخت را سفارشی کنید.
فصل 2، ساختار یک کامپایلر، یک نمای کلی از اجزای یک کامپایلر را به شما ارائه میدهد. در پایان فصل دوم کتاب Learn LLVM 17، شما اولین کامپایلر خود را که LLVM IR تولید می کند، پیاده سازی کرده اید.
فصل 3، تبدیل فایل منبع به یک درخت نحو انتزاعی، به شما به طور مفصل نحوه پیادهسازی فرانتاند یک کامپایلر را آموزش میدهد. شما برای یک زبان برنامه نویسی کوچک، فرانت اند خود را ایجاد خواهید کرد که با ساختن یک درخت نحو انتزاعی به پایان میرسد.
فصل 4، مبانی تولید کد IR، به شما نشان میدهد که چگونه LLVM IR را از یک درخت نحو انتزاعی تولید کنید. در پایان فصل چهارم کتاب Learn LLVM 17، شما یک کامپایلر برای زبان مثال پیادهسازی کردهاید که متن اسمبلی یا فایلهای کد شی را در نتیجه منتشر میکند.
فصل 5، تولید IR برای ساختارهای زبان سطح بالا، نحوه ترجمه ویژگیهای زبان مبدأ را که معمولاً در زبانهای برنامه نویسی سطح بالا یافت می شود به LLVM IR نشان میدهد. شما در مورد ترجمه انواع دادههای انبوه، گزینههای مختلف برای پیاده سازی وراثت کلاس و توابع مجازی، و نحوه انطباق با رابط باینری برنامه سیستم خود خواهید آموخت.
فصل 6، Advanced IR Generation، به شما نشان میدهد که چگونه LLVM IR را برای دستورات رسیدگی به استثنا در زبان مبدأ ایجاد کنید. همچنین یاد خواهید گرفت که چگونه متادیتا را برای تجزیه و تحلیل مستعار مبتنی بر نوع اضافه کنید، و چگونه اطلاعات اشکال زدایی را به LLVM IR تولید شده اضافه کنید، و فراداده تولید شده توسط کامپایلر خود را گسترش دهید.
فصل 7، بهینه سازی IR، مدیر پاس LLVM را توضیح میدهد. شما پاس خود را، هم به عنوان بخشی از LLVM و هم به عنوان یک افزونه، پیادهسازی میکنید و یاد میگیرید که چگونه پاس جدید خود را به خط لوله بهینهسازی پاس اضافه کنید.
فصل 8، زبان TableGen، زبان اختصاصی دامنه اختصاصی LLVM به نام TableGen را معرفی میکند. از این زبان برای کاهش تلاش برنامهنویس استفاده میشود و شما با روشهای مختلفی که میتوانید دادهها را در زبان TableGen تعریف کنید، و نحوه استفاده از آن در backend آشنا خواهید شد.
فصل 9، کامپایل JIT، چگونگی استفاده از LLVM را برای پیاده سازی یک کامپایلر به موقع (JIT) مورد بحث قرار میدهد. در پایان فصل نهم کتاب Learn LLVM 17، شما کامپایلر JIT خود را برای LLVM IR به دو روش مختلف پیاده سازی کرده اید.
فصل ۱۰، اشکالزدایی با استفاده از ابزارهای LLVM، جزئیات کتابخانهها و اجزای مختلف LLVM را بررسی میکند، که به شما کمک میکند تا باگهای برنامه خود را شناسایی کنید. شما از ضدعفونیکنندهها برای شناسایی سرریز بافر و سایر اشکالات استفاده خواهید کرد. با کتابخانه libFuzzer، توابع را با دادههای تصادفی به عنوان ورودی آزمایش خواهید کرد، و XRay به شما در یافتن گلوگاههای عملکرد کمک میکند. شما از آنالایزر استاتیک clang برای شناسایی اشکالات در سطح منبع استفاده خواهید کرد و خواهید آموخت که میتوانید جستجوگر خود را به تحلیلگر اضافه کنید. همچنین یاد خواهید گرفت که چگونه با پلاگین خود صدای جرنگ را گسترش دهید.
فصل ۱۱، شرح هدف، توضیح میدهد که چگونه میتوانید پشتیبانی از یک معماری جدید CPU را اضافه کنید. این فصل از کتاب Learn LLVM 17، مراحل ضروری و اختیاری مانند تعریف رجیسترها و دستورالعملها، توسعه انتخاب دستورالعمل، و پشتیبانی از اسمبلر و جداکننده را مورد بحث قرار میدهد.
فصل ۱۲، انتخاب دستورالعمل، دو رویکرد متفاوت را برای انتخاب دستورالعمل نشان میدهد، به طور خاص توضیح میدهد که SelectionDAG و GlobalISel چگونه کار میکنند و نحوه پیادهسازی این قابلیتها در یک هدف را بر اساس مثال فصل قبل نشان میدهد. علاوه بر این، نحوه اشکال زدایی و تست انتخاب دستورالعمل را خواهید آموخت.
فصل ۱۳، فراتر از انتخاب دستورالعمل، توضیح میدهد که چگونه پیادهسازی Backend را با کاوش در مفاهیم فراتر از انتخاب دستورالعمل تکمیل میکنید. این شامل افزودن پاسهای ماشین جدید برای اجرای وظایف خاص هدف میشود و شما را به موضوعات پیشرفتهای راهنمایی میکند که برای یک Backend ساده ضروری نیستند، اما ممکن است برای بهینهسازی بکاندها جالب باشند، مانند کامپایل متقابل در معماری CPU دیگر.
سرفصلهای کتاب Learn LLVM 17:
- Learn LLVM 17
- Contributors
- About the authors
- About the reviewers
- Preface
- Part 1: The Basics of Compiler Construction with LLVM
- Chapter 1: Installing LLVM
- Chapter 2: The Structure of a Compiler
- Part 2: From Source to Machine Code Generation
- Chapter 3: Turning the Source File into an Abstract Syntax Tree
- Chapter 4: Basics of IR Code Generation
- Chapter 5: IR Generation for High-Level Language Constructs
- Chapter 6: Advanced IR Generation
- Chapter 7: Optimizing IR
- Part 3: Taking LLVM to the Next Level
- Chapter 8: The TableGen Language
- Chapter 9: JIT Compilation
- Chapter 10: Debugging Using LLVM Tools
- Part 4: Roll Your Own Backend
- Chapter 11: The Target Description
- Chapter 12: Instruction Selection
- Chapter 13: Beyond Instruction Selection
- Index
- Other Books You May Enjoy
جهت دانلود کتاب Learn LLVM 17 میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.