LLVM 文档总结

来源:互联网 发布:com.mysql.jdbc.driver 编辑:程序博客网 时间:2024/06/08 06:55

翻译基于 http://llvm.org/docs/index.html 

LLVM 设计&概述

一些介绍性的文章和演示文稿

  • LLVM Language Reference Manual (LLVM语言参考手册)
    定义了LLVM中间表示

  • Introduction to the LLVM Compiler (LLVM编译器的介绍
    Book chapter providing a compiler hacker’s introduction to LLVM.

  • LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation (LLVM:一个生命期的程序分析与转换的编译器框架)

    设计概述

  • LLVM: An Infrastructure for Multi-Stage Optimization  (LLVM: 一个多级优化的基础设施)
    更多的细节(已经很老了)

  • Publications mentioning LLVM(提及LLVM的出版物)

用户指南

这些适用于LLVM 的新手

NOTE: If you are a user who is only interested in using LLVM-basedcompilers, you should look intoClang orDragonEgg instead. The documentation here isintended for users who have a need to work with the intermediate LLVMrepresentation.

  • Getting Started with the LLVM System (开始使用LLVM系统) 
    Discusses how to get up and running quickly with the LLVM infrastructure.Everything from unpacking and compilation of the distribution to executionof some tools.

  • Building LLVM with CMake (用CMake构建LLVM)
    An addendum to the main Getting Started guide for those using theCMakebuild system.

  • How To Build On ARM (如何在ARM上构建)
    Notes on building and testing LLVM/Clang on ARM

  • How To Cross-Compile Clang/LLVM using Clang/LLVM (如何交叉编译Clang/LLVM using Clang/LLVM)
    Notes on cross-building and testing LLVM/Clang.

  • Getting Started with the LLVM System using Microsoft Visual Studio (通过VS 使用LLVM)
    An addendum to the main Getting Started guide for those using Visual Studioon Windows.

  • LLVM Tutorial: Table of Contents (LLVM教程:目录)
    Tutorials about using LLVM. Includes a tutorial about making a customlanguage with LLVM.

  • LLVM Command Guide (LLVM 命令指南)
    A reference manual for the LLVM command line utilities (“man” pages for LLVMtools).

  • LLVM’s Analysis and Transform Passes ()
    A list of optimizations and analyses implemented in LLVM.

  • Frequently Asked Questions (FAQ) (常见问题)
    A list of common questions and problems and their solutions.

  • Release notes for the current release (当前版本发行说明)
    This describes new features, known bugs, and other limitations.

  • How to submit an LLVM bug report (如何提交一份LLVM bug报告)
    Instructions for properly submitting information about any bugs you run intoin the LLVM system.

  • Sphinx Quickstart Template (Sphinx 快速入门文档)
    A template + tutorial for writing new Sphinx documentation. It is meantto be read in source form.

  • LLVM Testing Infrastructure Guide (LLVM 测试基础指南)
    A reference manual for using the LLVM testing infrastructure.

  • How to build the C, C++, ObjC, and ObjC++ front end ()
    Instructions for building the clang front-end from source.

  • The LLVM Lexicon (LLVM的Lexicon)
    Definition of acronyms, terms and concepts used in LLVM.

  • How To Add Your Build Configuration To LLVM Buildbot Infrastructure ()
    Instructions for adding new builder to LLVM buildbot master.

  • YAML I/O ()
    A reference guide for using LLVM’s YAML I/O library.

  • The Often Misunderstood GEP Instruction (构建配置LLVM Buildbot基础设施)
    Answers to some very frequent questions about LLVM’s most frequentlymisunderstood instruction.

编程文档

适用于那些将LLVM 作为一个 libray 的应用开发者

  • LLVM Language Reference Manual (LLVM语言参考手册)
    Defines the LLVM intermediate representation and the assembly form of thedifferent nodes.

  • LLVM Atomic Instructions and Concurrency Guide (LLVM 原子和并发指令指南)
    Information about LLVM’s concurrency model.


  • LLVM Programmer’s Manual (LLVM程序员手册)
    Introduction to the general layout of the LLVM sourcebase, important classesand APIs, and some tips & tricks.


  • LLVM Extensions (LLVM扩展)
    LLVM-specific extensions to tools and formats LLVM seeks compatibility with.


  • CommandLine 2.0 Library Manual (命令行库2.0 手册)
    Provides information on using the command line parsing library.


  • LLVM Coding Standards (LLVM编码标准)  
    详细介绍了LLVM编码标准和提供有用信息关于编写高效的c++代码。


  • How to set up LLVM-style RTTI for your class hierarchy
    How to make isa<>,dyn_cast<>, etc. available for clients of yourclass hierarchy.


  • Extending LLVM: Adding instructions, intrinsics, types, etc.
    Look here to see how to add instructions and intrinsics to LLVM.


  • Doxygen generated documentation
    (classes)(tarball)


  • ViewVC Repository Browser

  • Architecture & Platform Information for Compiler Writers

  • A list of helpful links for compiler writers.

子系统 文档

适用于 API 客户 和LLVM 的开发者

  • Writing an LLVM Pass
    Information on how to write LLVM transformations and analyses.

  • Writing an LLVM Backend
    Information on how to write LLVM backends for machine targets.

  • The LLVM Target-Independent Code Generator
    The design and implementation of the LLVM code generator. Useful if you areworking on retargetting LLVM to a new architecture, designing a new codegenpass, or enhancing existing components.

  • TableGen Fundamentals
    Describes the TableGen tool, which is used heavily by the LLVM codegenerator.

  • LLVM Alias Analysis Infrastructure
    Information on how to write a new alias analysis implementation or how touse existing analyses.

  • Accurate Garbage Collection with LLVM
    The interfaces source-language compilers should use for compiling GC’dprograms.

  • Source Level Debugging with LLVM
    This document describes the design and philosophy behind the LLVMsource-level debugger.

  • Auto-Vectorization in LLVM
    This document describes the current status of vectorization in LLVM.

  • Exception Handling in LLVM
    This document describes the design and implementation of exception handlingin LLVM.

  • LLVM bugpoint tool: design and usage
    Automatic bug finder and test-case reducer description and usageinformation.

  • LLVM Bitcode File Format
    This describes the file format and encoding used for LLVM “bc” files.

  • System Library
    This document describes the LLVM System Library (lib/System) andhow to keep LLVM source code portable

  • LLVM Link Time Optimization: Design and Implementation
    This document describes the interface between LLVM intermodular optimizerand the linker and its design

  • The LLVM gold plugin
    How to build your programs with link-time optimization on Linux.

  • Debugging JIT-ed Code With GDB
    How to debug JITed code with GDB.

  • MCJIT Design and Implementation
    Describes the inner workings of MCJIT execution engine.

  • LLVM Branch Weight Metadata
    Provides information about Branch Prediction Information.

  • Segmented Stacks in LLVM
    This document describes segmented stacks and how they are used in LLVM.

  • LLVM’s Optional RichDisassemblyOutput
    This document describes the optional rich disassembly output syntax.

  • How To Use Attributes
    Answers some questions about the new Attributes infrastructure.

  • User Guide for NVPTX Back-end
    This document describes using the NVPTX back-end to compile GPU kernels.

开发过程文档

Information about LLVM’s development process.

  • LLVM Developer Policy
    The LLVM project’s policy towards developers and their contributions.

  • Creating an LLVM Project
    How-to guide and templates for new projects that use the LLVMinfrastructure. The templates (directory organization, Makefiles, and testtree) allow the project code to be located outside (or inside) thellvm/tree, while using LLVM header files and libraries.

  • LLVMBuild Guide
    Describes the LLVMBuild organization and files used by LLVM to specifycomponent descriptions.

  • LLVM Makefile Guide
    Describes how the LLVM makefiles work and how to use them.

  • How To Release LLVM To The Public
    This is a guide to preparing LLVM releases. Most developers can ignore it.

  • How To Validate a New Release
    This is a validate a new release, during the release process. Most developers can ignore it.

  • Advice on Packaging LLVM
    Advice on packaging LLVM into a distribution.

社区

LLVM has a thriving community of friendly and helpful developers.The two primary communication mechanisms in the LLVM community are mailinglists and IRC.

邮件列表

If you can’t find what you need in these docs, try consulting the mailinglists.

  • Developer’s List (llvmdev)
    This list is for people who want to be included in technical discussions ofLLVM. People post to this list when they have questions about writing codefor or using the LLVM tools. It is relatively low volume.

  • Commits Archive (llvm-commits)
    This list contains all commit messages that are made when LLVM developerscommit code changes to the repository. It also serves as a forum forpatch review (i.e. send patches here). It is useful for those who want tostay on the bleeding edge of LLVM development. This list is very highvolume.

  • Bugs & Patches Archive (llvmbugs)
    This list gets emailed every time a bug is opened and closed. It ishigher volume than the LLVMdev list.

  • Test Results Archive (llvm-testresults)
    A message is automatically sent to this list by every active nightly testerwhen it completes. As such, this list gets email several times each day,making it a high volume list.

  • LLVM Announcements List (llvm-announce)
    This is a low volume list that provides important announcements regardingLLVM. It gets email about once a month.

IRC

Users and developers of the LLVM project (including subprojects such as Clang)can be found in #llvm onirc.oftc.net.

This channel has several bots.

  • Buildbot reporters
    • llvmbb - Bot for the main LLVM buildbot master.http://lab.llvm.org:8011/console
    • bb-chapuni - An individually run buildbot master. http://bb.pgr.jp/console
    • smooshlab - Apple’s internal buildbot master.
  • robot - Bugzilla linker. %bug <number>
  • clang-bot - A geordi instance runningnear-trunk clang instead of gcc.

以上是本人自己翻译,如果有不合理之处,请指正,我会积极修改, 方便大家学习llvm

*转载请注明出处