Antecedentes: Estoy escribiendo un compilador/compilador Lisp de juguete en Haskell para mi propio entretenimiento/edificación. Estoy tratando de agregar la capacidad de compilar a bytecode LLVM.Hacia la comprensión de CodeGen * en los enlaces de Haskell LLVM
Contexto: He estado leyendo la documentación de LLVM.Core y un ejemplo de código (here) intentar entender las medio de combinación y medio de la abstracción (como se describe en Abelson and Sussman Structure and Interpretation of Computer Programs.) Utilizados en el Haskell LLVM enlaces Hay muchas piezas pequeñas y no tengo claro cómo se pretende que funcionen juntas. Parece que hay un nivel de abstracción por encima de las instrucciones básicas de máquina LLVM que es obvio para alguien con mucha experiencia con LLVM, pero no está documentado para aquellos, como yo, que solo se están mojando los pies.
Pregunta: ¿Cuáles sonCodeGenModule
y CodeGenFunction
y cómo se utilizan para construir Functions
y Modules
?