[LLVMdev] LLVM based Virtual Machine "Environment" idea sanity check.
Chris Lattner
sabre at nondot.org
Wed Sep 6 00:22:14 PDT 2006
On Wed, 6 Sep 2006, Shawn Boles wrote:
> This is where I'm stumped... how can I use LLVM inside my "simplified
> processing node," allowing it only access to my "virtual devices,"
> getting it to run "as fast as possible" with as little possibility of it
> clobbering the host computer should something untoward happen to the
> LLVM code? I'm still sifting through the documentation and feel like
> I'm 90% there to understanding out LLVM works as a Virtual Machine, and
> not a Compiler backend or Intermediate Language. Or, if LLVM isn't my
> "perfect match," where should I look?
LLVM isn't a perfect match today. It does provide the ability to
transport code around in a portable way and execute it, but lacks these
features:
1. Given C input code, the output isn't guaranteed to be portable. This
is a C limitation, not an LLVM limitation. In practice, if you avoid a
few constructs, and stay away for complex system interfaces, the code
you write will be mostly portable.
2. LLVM doesn't provide safety (it doesn't prevent the program from
clobbering the machine).
#1 is a limitation of C, not LLVM. If you use a portable source language,
you'll get portable LLVM Code. Several people are interested in #2 and
have solutions with various tradeoffs, if you ask here I'm sure they'll
tell you about them.
In practice, the hard part, and the value add, of your project seems to be
the higher-level design issues (what APIs / interfaces do you provide, how
to pull it together into a useful system, how to set up the middleware,
etc). Building the initial system on top of LLVM without worrying about
#1/#2 seems like a good way to get a prototype up and running, and you
might find out that #1/#2 might get solved for you by other community
members.
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
More information about the llvm-dev
mailing list