Estoy iniciando un compilador de lenguaje de programación encima de LLVM. Actualmente estoy casi hecho escribiendo un compilador para un subconjunto de C que es auto compilado. Cuando termine con eso, arrancaré mi lenguaje de C, manteniendo la autocompilación sobre la marcha.Bootstrapping de un lenguaje en LLVM
Dado que el compilador es autocompilar, las características de C que uso tendré que implementar. Por lo tanto, es un equilibrio constante: si uso demasiadas funciones tendré que implementar más de lo que quiero, pero si no implemento suficientes funciones, será difícil escribir código.
Una de estas funciones son los enlaces LLVM. Generar representación intermedia de LLVM sin los enlaces de LLVM C es difícil. Sin embargo, si nosotros los enlaces LLVM, tengo que implementarlos de nuevo cuando me desvío de C.
Tengo algunas dificultades aquí, entonces busco soluciones alternativas. ¿Algunas ideas?
¿Qué está escribiendo su compilador en? ¿DO? ¿Estás utilizando LLVM para la compilación de código de máquina? –
Mi compilador está escrito en el subconjunto de C que compila. Lo siento, no lo he explicado bien. Mi plan actual es escribir una representación intermedia de LLVM en un archivo y luego usar LLVM para compilarla, pero eso es complicado, y estoy buscando una solución más limpia. – Imagist
LLVM es una gran opción para el back-end, por cierto. He tenido mucha suerte con eso. –