[LLVMdev] C Compiler written in OCaml, Pointers Wanted

Nyx mcheva at cs.mcgill.ca
Tue Feb 23 19:37:35 PST 2010


For a course project, I am required to write a compiler for some language of
my choice, and this compiler has to be implemented in a functional language.
I have chosen create a *JIT* compiler for C source, and to implement my
compiler in OCaml using LLVM for the back-end. I have experience using LLVM
in C++ (I wrote a MATLAB JIT compiler not long ago), however, I am a bit
puzzled as to how to go about some things, and would appreciate some

1. When writing my MATLAB JIT in C++, I created bindings to native C++
functions to serve as my runtime library. This hardly seems practical in
OCaml. I would ideally want to write my runtime library in C (this will
contain functions such as malloc, free, puts, strlen, etc.), and link it
with the code I compile somehow. Is there any way for LLVM to link with code
in pre-compiled C object files? Please note that this is for a JIT compiler,
I need to be able to do this at run-time, I will not be generating an
executable file.

2. One thing I don't know how to go about is memory allocation. As I just
said, this will be a C *JIT* compiler. This means that my running compiled
code will have to co-exist with OCaml. How do I go about implementing malloc
in this context? Does LLVM provide some memory allocation implementation
that will work with a JIT?

3. Do the OCaml LLVM bindings even allow using LLVM in JIT mode?

And of course, if anyone has experience writing a JIT using LLVM, or using
the OCaml LLVM bindings, any advice you may have will be greatly
View this message in context: http://old.nabble.com/C-Compiler-written-in-OCaml%2C-Pointers-Wanted-tp27714082p27714082.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.

More information about the llvm-dev mailing list