На пути к пониманию CodeGen * в привязках LLVM Haskell

Предыстория: Я пишу игрушечный интерпретатор / компилятор Lisp на Haskell для собственного развлечения / назидания. Я пытаюсь добавить возможность компиляции в байт-код LLVM.

Контекст: Я читал документацию для LLVM.Core и пример кода ( здесь ) попытка понять средства комбинации и средства абстракции (как описано в Abelson and Sussman Структура и интерпретация компьютерных программ .), используемых в привязках Haskell LLVM. Есть много мелких деталей, и я не понимаю, как они должны работать вместе. Похоже, что существует уровень абстракции выше базовых машинных инструкций LLVM, который очевиден для тех, кто имеет большой опыт работы с LLVM, но не задокументирован для тех, кто, как я, только начинает намочить ноги.

Вопрос: Что такое CodeGenModule и CodeGenFunction и как они используются для создания функций и модулей ?

22
задан Mikhail Glushenkov 16 June 2011 в 17:48
поделиться