Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generating LLVM code for 'lambda', 'define'

Tags:

So I now have a fairly complete LISP (scheme) interpreter written in haskell. Just for fun I want to try to have it compile down to LLVM. Most of the code generation seems pretty straight forward, but I'm at a loss as to how to generate code for a lambda expression (kind of important in lisp ;) ) and how to manage the heap when I encounter a define expression.

How might I generated code for these expressions?

Note: I can generate code for the body of the lambda expression, What is confusing me is how to "put" that code somewhere and make it callable.

like image 955
John F. Miller Avatar asked Jun 15 '11 16:06

John F. Miller


1 Answers

See Lennart's blog post: http://augustss.blogspot.com/2009/06/more-llvm-recently-someone-asked-me-on.html

Look at the compileFunction function. In particular, newFunction in the LLVM core: http://hackage.haskell.org/packages/archive/llvm/0.9.1.2/doc/html/LLVM-Core.html#g:23

like image 160
Don Stewart Avatar answered Sep 22 '22 22:09

Don Stewart