Latar belakang: Saya sedang menulis mainan Lisp interperter/compiler di Haskell untuk hiburan/pembangunan saya sendiri. Saya mencoba menambahkan kemampuan kompilasi ke bytecode LLVM.
Konteks: Saya telah membaca dokumentasi untuk LLVM.Core dan contoh kode (di sini) mencoba memahami sarana kombinasi dan sarana abstraksi (seperti dijelaskan dalam Abelson dan Sussman Struktur dan Interpretasi Program Komputer.) digunakan dalam binding Haskell LLVM. Ada banyak bagian kecil dan saya tidak jelas bagaimana mereka dimaksudkan untuk bekerja sama. Sepertinya ada tingkat abstraksi di atas instruksi dasar mesin LLVM yang jelas bagi seseorang yang memiliki banyak pengalaman dengan LLVM, tetapi tidak didokumentasikan bagi mereka, seperti saya, yang baru saja mulai basah kuyup.
Pertanyaan: Apa itu CodeGenModule
dan CodeGenFunction
dan bagaimana cara menggunakannya untuk membangun Functions
dan Modules
?