[erlang-questions] Low Level Virtual Machine (LLVM) for optimization across the intire lifetime of a program
Roger Larsson
roger.larsson@REDACTED
Wed Feb 13 22:34:44 CET 2008
Found this interesting report via lwn.net
http://llvm.org/pubs/2004-01-30-CGO-LLVM.html
From the home page http://llvm.org/
"A compilation strategy designed to enable effective program optimization
across the entire lifetime of a program. LLVM supports effective optimization
at compile time, link-time (particularly interprocedural), run-time and
offline (i.e., after software is installed), while remaining transparent to
developers and maintaining compatibility with existing build scripts.
A virtual instruction set - LLVM is a low-level object code representation
that uses simple RISC-like instructions, but provides rich,
language-independent, type information and dataflow (SSA) information about
operands. This combination enables sophisticated transformations on object
code, while remaining light-weight enough to be attached to the executable.
This combination is key to allowing link-time, run-time, and offline
transformations.
A compiler infrastructure - LLVM is also a collection of source code that
implements the language and compilation strategy. The primary components of
the LLVM infrastructure are a GCC-based C & C++ front-end, a link-time
optimization framework with a growing set of global and interprocedural
analyses and transformations, static back-ends for the X86, X86-64, PowerPC
32/64, ARM, Thumb, IA-64, Alpha and SPARC architectures, a back-end which
emits portable C code, and a Just-In-Time compiler for X86, X86-64, PowerPC
32/64 processors.
LLVM does not imply things that you would expect from a high-level virtual
machine. It does not require garbage collection or run-time code generation
(In fact, LLVM makes a great static compiler!). Note that optional LLVM
components can be used to build high-level virtual machines and other systems
that need these services."
This sounds like a much better match for code generation than Java or CLI.
A suitable examination work?
/RogerL
More information about the erlang-questions
mailing list