Генерация кода LLVM для «лямбда», «определить» - PullRequest
20 голосов
/ 15 июня 2011

Итак, теперь у меня есть довольно полный интерпретатор LISP (схемы), написанный на haskell. Просто ради интереса, я хочу попробовать собрать его в LLVM. Большая часть генерации кода кажется довольно простой, но я не знаю, как сгенерировать код для выражения lambda (что важно в lisp;)) и как управлять кучей, когда я сталкиваюсь с define выражение.

Как мне сгенерировать код для этих выражений?

Примечание: я могу сгенерировать код для тела лямбда-выражения. Меня смущает то, как "поместить" этот код куда-нибудь и сделать его вызываемым.

1 Ответ

10 голосов
/ 15 июня 2011

См. Пост в блоге Леннарта: http://augustss.blogspot.com/2009/06/more-llvm-recently-someone-asked-me-on.html

Посмотрите на функцию compileFunction. В частности, newFunction в ядре LLVM: http://hackage.haskell.org/packages/archive/llvm/0.9.1.2/doc/html/LLVM-Core.html#g:23

...