[LLVMdev] Tool for run-time code generation?

Samuel Crow samuraileumas at yahoo.com
Fri Jul 16 12:57:50 PDT 2010





----- Original Message ----
> From: David Piepgrass <dpiepgrass at mentoreng.com>
> To: Samuel Crow <samuraileumas at yahoo.com>
> Sent: Fri, July 16, 2010 2:48:10 PM
> Subject: RE: [LLVMdev] Tool for run-time code generation?
> 
> WinCE offers most of the standard C APIs (such as malloc), as well  as most 
>standard C++ libraries including, I think, the same STL that is  available under 
>Win32. There could be some gaps, but I hope, given that I only  need part of 
>LLVM, that any "porting" I have to do will involve only small  tweaks.
> 
> If you mean that dynamically generated code cannot call malloc  (why not? 
>Couldn't I provide a table that tells LLVM the address of malloc and  any other 
>methods I want to call?), even then it is not a problem, since the  code I want 
>to generate will simply access records and do some arithmetic. For  example, I 
>might generate a function that does this:
> 
> int  ReadArrayElement(byte* record, int index, int defValue)
> {
>      unsigned arraySize = (*(unsigned*)(record + 4) & 0x7F);
>     if  (index > arraySize)
>         return defValue;
>      return *(int*)(record + 8 + index * 4);
> }
> 
> No method calls  there.
> 

There's one very big one named ReadArrayElement() right in the middle of what 
you just typed.  You'd have to assume the calling conventions of the ARM code 
are the same as the x86 code (which is impossible because of the different 
architectures), or that the calling convention is the same as ARM Linux.  You'd 
need to implement the Windows CE ABIs into the backend to be able to define the 
C calling convention to call that code.  I think you're trivializing something 
that is more complicated than you are giving it credit for.


      



More information about the llvm-dev mailing list