[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