[LLVMdev] Dynamic (JIT) type resolution

BGB cr88192 at hotmail.com
Tue Nov 6 21:02:30 PST 2007


----- Original Message ----- 
From: "Nicolas Geoffray" <nicolas.geoffray at lip6.fr>
To: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>
Sent: Wednesday, November 07, 2007 2:35 PM
Subject: Re: [LLVMdev] Dynamic (JIT) type resolution


> BGB wrote:
>> ok, here is another option then:
>> the stub is set up to manually modify the code near the return address 
>> (may
>> be arch specific and require spiffy use of assembler).
>>
>>
>
> That's not another option. That's what I want to do.
>
>> now, how you would go about implementing this is up to you.
>>
>
> And I need to know if I can currently do that with LLVM. Thus my initial
> question :)
>

for x86:
I presume LLVM supports inline assembler, and also uses the traditional 
frame pointer-based stack layout, but I don't know the details (people who 
know LLVM could probably be more helpful here).

ok, maybe here is an option:
after getting the value (in the created stub), execute a chunk of inline 
assembler to modify the caller (note: will probably need to modify inline 
asm syntax, as compilers tend to differ on this point...).

something like this (figure out sort of how it works, and maybe mutate into 
something usable):
int lookup_stub()
{
    int i;

    i=getElementOffsetOf("One", "a");

    asm {
        mov eax, i                         //return value
        mov edx, [ebp+4]             //return addr
        mov byte [edx-5], 0xB8    //mov eax, imm32
        mov [edx-4], eax               //store return value in imm
    }

    return(i);
}





More information about the llvm-dev mailing list