Jose's Read Only Forum 2023

General Category => General Discussion => Topic started by: Marco Pontello on October 29, 2007, 01:22:10 PM

Title: LLVM Framework & Compiler Infrastructure
Post by: Marco Pontello on October 29, 2007, 01:22:10 PM
I read about LLVM on ArsTechnica review of Mac OS X Leopard (http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/11).

Home page: The LLVM Compiler Infrastructure  (http://llvm.org/)
Google Tech Talks video: YouTube - LLVM 2.0 (http://fr.youtube.com/watch?v=VeRaLPupGks)

From the tutorial pages:
QuoteAbstract:

    The Low-Level Virtual Machine (LLVM) is a collection of libraries and tools that make it easy to build compilers, optimizers, Just-In-Time code generators, and many other compiler-related programs. LLVM uses a single, language-independent virtual instruction set both as an offline code representation (to communicate code between compiler phases and to run-time systems) and as the compiler internal representation (to analyze and transform programs). This persistent code representation allows a common set of sophisticated compiler techniques to be applied at compile-time, link-time, install-time, run-time, or "idle-time" (between program runs).

    The strengths of the LLVM infrastructure are its extremely simple design (which makes it easy to understand and use), source-language independence, powerful mid-level optimizer, automated compiler debugging support, extensibility, and its stability and reliability. LLVM is currently being used to host a wide variety of academic research projects and commercial projects. LLVM includes C and C++ front-ends (based on GCC 3.4), a front-end for a Forth-like language (Stacker), a young scheme front-end, and Java support is in development. LLVM can generate code for X86, SparcV9, PowerPC, or it can emit C code.

    This tutorial describes the LLVM virtual instruction set and the high-level design of the LLVM compiler system. To illustrate the ideas in the LLVM IR, we use a running example (by-reference to by-value argument promotion) to illustrate several important API's in the LLVM system. Next, we describe some of the key tools provided by LLVM, and mention several projects that are natural targets for the LLVM system.

Bye!
Title: Re: LLVM Framework & Compiler Infrastructure
Post by: Theo Gottwald on October 30, 2007, 07:47:06 AM
QuoteLLVM uses a single, language-independent virtual instruction set both as an offline code representation (to communicate code between compiler phases and to run-time systems) and as the compiler internal representation (to analyze and transform programs). This persistent code representation allows a common set of sophisticated compiler techniques to be applied at compile-time, link-time, install-time, run-time, or "idle-time" (between program runs).

If its a language-independent virtual instruction set as written, will it be a new ".NET" Alternative, targeting CPU independence on future MAC's?
Title: Re: LLVM Framework & Compiler Infrastructure
Post by: Charles Pegge on October 30, 2007, 01:16:20 PM

This is a layer that would sit below .Net's Common Language Runtime. It is a virtual piece of silicon, which gives it the power, simplicity and flexibility to be used on many platforms and devices, both for static compilation and Just-In-Time compilation.

LLVM is a valuable gift from Apple.