Giter VIP home page Giter VIP logo

llvm-techniques-tips-and-best-practies's Introduction

LLVM Techniques, Tips, and Best Practices

Clang and Middle-End Libraries

Design powerful and reliable compilers using the latest libraries and tools from LLVM

(Clang和中端库 - 使用最新的LLVM库和工具设计强大且可靠的编译器)

翻译是译者用自己的**,换一种语言,对原作者想法的重新阐释。鉴于我的学识所限,误解和错译在所难免。如果你能买到本书的原版,且有能力阅读英文,请直接去读原文。因为与之相较,我的译文可能根本不值得一读。

— 云风,程序员修炼之道第2版译者

本书概述

编译器将高级编程语言转换为低层机器可执行的代码,所以每个程序员或工程师,在职业生涯的某个时刻,都会与编译器一起优化应用程序。LLVM为开发者提供了基础设施、库和(开发人员构建自己的)编译器所需的工具。使用LLVM的工具集,可以有效地为不同的后端生成代码,并进行优化。

本书将探索LLVM编译器的基础结构,并介绍如何来解决问题。我们从查看LLVM重要组件的结构和设计理念开始,逐步使用Clang库来构建分析高级源代码的工具。随着了解的深入,本书将向介绍如何处理LLVM IR——用以转换和优化源码。了解了这些,就将能够利用LLVM和Clang创建编程语言工具,包括编译器、解释器、IDE和源代码分析程序。

本书的最后,可以使用LLVM框架创建强大的工具技能,以应对现实中的各种挑战。

关键特性

  • (以务实的方式)探索Clang,LLVM的中端和后端
  • 点亮LLVM的各个技能点,并掌握各种常见用例
  • 通过示例应对实际的LLVM开发

内容纲要

  • 了解LLVM的构建系统是如何工作的,以及如何减少构建资源
  • 掌握使用LLVM的LIT框架运行自定义测试的方法
  • 为Clang构建不同类型的插件和扩展
  • 基于Clang自定义工具链和编译器标志
  • 为PassManager写LLVM Pass
  • 了解如何检查和修改LLVM IR
  • 了解如何使用LLVM的配置文件引导优化(PGO)框架
  • 创建自定义(编译器)消毒器

适读人群

本书适用于所有具有LLVM工作经验的软件工程师,本书会提供了简明的开发指南和参考。如果你是一名学术研究者,这本书将助你在短时间内学习有用的LLVM技能,使你能够快速构建项目原型。编程语言爱好者也会发现这本书中的内容,在LLVM的帮助下构建一种新的编程语言也十分有趣

作者简介

Min-Yih "Min" Hsu是加州大学欧文分校计算机科学博士研究生。他的研究集中在编译器工程、代码优化、高级硬件架构和系统安全。2015年起,他一直是LLVM社区的活跃成员,并贡献了许多补丁。他还致力于通过各种途径倡导LLVM和编译器工程,比如写博客和发表演讲。在业余时间,他喜欢了解各种不同的咖啡豆和煮咖啡的方法。

我要感谢所有支持过我的人,特别是家人和导师。还要感谢LLVM社区不论出身的包容和善待每一位成员。

—Min-Yih Hsu

审评者介绍

Suyog Sarda是一名专业的软件工程师和开源爱好者,专注于编译器开发和编译器工具,是LLVM开源社区的积极贡献者。他毕业于了印度浦那工程学院,具有计算机技术学士学位。Suyog还参与了ARM和X86架构的代码性能改进,一直是Tizen项目编译团队的一员,对编译器开发的兴趣在于代码优化和向量化。之前,他写过一本关于LLVM的书,名为《LLVM Cookbook》,由Packt出版。除了编译器,Suyog还对Linux内核开发感兴趣。他在迪拜Birla Institute of Technology的2012年IEEE Proceedings of the International Conference on Cloud Computing, Technologies, Applications, and Management上发表了一篇题为《VM pin and Page Coloring Secure Co-resident Virtualization in Multicore Systems》的技术论文。

他在浦那工程学院获得了技术学士学位。到目前为止,他的工作主要与编译器有关,并他对编译器的性能方面特别感兴趣。他曾致力于DSP图像处理语言的研究,使用LLVM的模块化特性可以根据编译器的需求快速实现。然而,LLVM的文档比较分散,他希望这本书可以为LLVM编译器基础架构提供一种综合性的概述。

本书相关

llvm-techniques-tips-and-best-practies's People

Contributors

xiaoweichen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.