[LLVMdev] Strategy for leveraging llvm optimizations in vm

Jean-Daniel Dupas devlists at shadowlab.org
Tue Sep 13 07:12:48 PDT 2011


Le 13 sept. 2011 à 15:40, Reid Kleckner a écrit :

> If you x86 assembly is sufficiently simple, I don't see any reason why
> you couldn't programmatically raise it back up to LLVM IR.  People
> have tried this in the past (qemu, I think?  I can't remember),

IIRC, this is what libcpu does.

http://www.libcpu.org/wiki/Main_Page


> and it
> usually results in some considerable slowdowns.  I'd imagine that if
> your asm is sufficiently restricted, such as not needing to worry
> about arithmetic flags, the x87 FPU stack, or arbitrary control flow,
> then it should be easy to do without introducing any slowdowns.
> 
> Reid
> 
> On Tue, Sep 13, 2011 at 9:14 AM, Michael Clagett <mclagett at hotmail.com> wrote:
>> 
>> Hi --
>> 
>> I'm still very much a newbie with llvm, but am looking (hopefully) to use it
>> to compile into native intel code a set of source that is a combination of
>> byte codes for my own custom vm and intel code that has been coded in
>> assembly language directly.
>> 
>> In an earlier exchange, I already discovered that llvm does not do any
>> optimizations on intel assembly language code.  This would be an interesting
>> thing to add, I believe, and I may make some progress in that direction as I
>> proceed.  But in the meantime I'm wondering if the following makes sense:
>> To write two separate translation mechanisms; one that translates the
>> assembler code associated with each of my byte codes into a sequence of llvm
>> intermediate code instructions, and the other to do the same with
>> instructions coded directly in intel assembly (i.e there would be a
>> one-to-one correspondence between intel assembly language statements and
>> llvm intermediate code statements, substituting real register assignments
>> with llvm virtual register assignments.
>> 
>> It strikes me that if I did this, I would then have instruction sequences
>> (whether originating in my byte code or in intel assembly language) that
>> could be submitted to the llvm optimization engine.  Does this make sense to
>> any of you old hands?
>> 
>> Thanks.
>> 
>> Mike
>> 
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>> 
>> 
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-- Jean-Daniel








More information about the llvm-dev mailing list