1D. 2 llvm Overview

Source: Internet
Author: User

Http://llvm.org/

Llvm projects are a collection of modular and reusable compiler and toolchain technologies. Although its name, llvm, is not big for traditional virtual machines, it does provide useful libraries for building them.

Llvm started a research project at the University of Illinois, with the goal of providing a modern, SSA-based compilation strategy that can support both static and dynamic compilation of any programming language. Since then, llvm has grown into an umbrella project composed of different sub-projects, many of which are used to produce a variety of commercial and open-source projects, and is widely used in academic research. The code in the llvm project authorizes the "University of Illinois" BSD-style license.

The main sub-project llvm is:

Llvm's core library provides a modern source and target-independent optimized code generation that supports many popular CPUs (and some uncommon ones !) These libraries are called llvm's intermediate representation built around a Specified Code representative ("llvm
IR "). Llvm's core library is well documented and invented in its own language (or port's existing compiler) using llvm optimization and code generation, which is particularly easy.

Clang is "llvm local" C/C ++/objective
The C compiler is designed to provide surprising fast compilation and useful error and warning messages (about three times faster than GCC when compiling and debugging the objective-C code, and provide a platform for building new great source code-level tools. The parse static analyzer is a tool that automatically discovers errors in the Code. It is a good example. It can be parsed as a library.
/C ++ uses the sort front-end tool to sort the code.

Dragonegg integrates llvm optimization and code generator with the GCC 4.5 parser. This makes the GCC compiler frontend support for Ada, Fortran compiled by llvm and other languages, and does not support C compiler (such as OpenMP.

Based on the lldb project, the llvm and slave database are provided for great local debugging. It uses the AST and expression parser of explain, llvm JIT, llvm disassembly, and so on, so that it provides a "engineering" experience. It also opens up fast and more efficient memory than the gdb loading symbol.

The libc ++ and libc ++ Abi projects provide implementation of a standard compliance and high-performance C ++ standard library, including fully supported C ++ 0x.

The highly optimized compiler RT project provides low-level code generators, such as "_ fixunsdfdi" and the target does not have a short-term local command sequence, to implement other calls generated when a core infrared Operation Supports routine implementation.

Java and. Net llvm technology to establish virtual machines.

The Kerry project implements a "symbolic virtual machine" that uses a theorem to prove that it attempts to evaluate the attributes in an effort to find errors and prove functions through all the dynamic paths in the program. A major feature of Keli is that it can generate an event in a test case and it detects an error.

The safecode project is secure for the memory compiler of C/C ++ programs. Check the code when the instrument is running to detect any running security errors (such as buffer overflow ). It can be used to protect software and security attacks, or as a debugging tool for storing security errors such as valgrind.

In addition, the official sub-projects of llvm include other projects that are part of various tasks that use llvm. Through these external projects, you can use ruby, Python, Haskell, Java, R & D, PHP, pure, Lua, and other languages compiled by llvm. The main advantage of an llvm is its versatility, flexibility, and reusability, which is why it is used for a variety of different tasks: Everything is lightweight, for example, Lua's embedded language compiles the JIT compilation of Fortran code for large-scale supercomputers.

Everything about llvm has a broad and friendly community of interest in building new great low level tools. If you are interested in participating, a good place is to skim the llvm blog and sign the llvm's developer email list. For more information about how to send a patch, submit access, copyright, and license topics, see llvm development policies.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.