Создание кода LLVM для 'lambda', 'define'
Итак, теперь у меня есть довольно полный интерпретатор LISP (схема), написанный в haskell. Просто для удовольствия я хочу попытаться скомпилировать его в LLVM. Большая часть генерации кода кажется довольно прямой, но я не понимаю, как сгенерировать код для выражения lambda
(вид важного в LISP;)) и как управлять кучей, когда я сталкиваюсь с define
.
Как я могу сгенерировать код для этих выражений?
Примечание. Я могу сгенерировать код для тела выражения лямбда. Что меня смущает, так это "поместить" этот код где-нибудь и сделать его вызываемым.
Ответы
Ответ 1
См. сообщение в блоге Lennart: 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