alois cochard
Después de aprender un poco sobre cómo funciona LLVM, estoy realmente entusiasmado con la forma en que se puede generar el código portátil de bajo nivel y la forma modular en que se construye esta ‘cosa’.
Pero hoy descubrí la existencia de C, que parece compartir algunos conceptos con LLVM.
Así que estoy buscando información que me ayude a comprender las principales diferencias entre estos dos proyectos… y por qué ambos existen.
Para mí, LLVM se parece un poco a la navaja suiza definitiva para la infraestructura del compilador, y C– parece mucho menos avanzado.
Profesor Falken
Difieren en cuán expresivo es el sistema de tipo de máquina de bajo nivel.
los LLVM La máquina es bastante expresiva. los C– La máquina, por otro lado, pone mucha responsabilidad en la interfaz del lenguaje. Citando de la C– Preguntas frecuentes: “simplemente, C– no tiene tipos de alto nivel — ni siquiera distingue las variables de punto flotante de las variables enteras. Este modelo le da al front-end el control total de la representación y el sistema de tipos”.
También visualmente se ven muy diferentes. C– se parece mucho a C, LLVM se parece mucho a un ensamblador.
Pragmáticamente, LLVM tiene mucho más impulso en este momento. Tiene un compilador JIT, Apple lo está usando para Cosas de tubería 3D y la gente lo está usando para conectarse a CCG y todo tipo de extraño y maravilloso cosas. Alguien lo llamó “casi absurdamente fácil de trabajar con“.
Por otra parte C– es mucho más pequeño y probablemente más fácil de comprender por completo. (Me imagino que una persona normal con algo de dedicación puede entender perfectamente todos aspectos de la misma).
-
Entonces, si entiendo correctamente, la principal diferencia es el nivel de abstracción de la representación intermedia utilizada por el compilador de tesis. Gracias !
– Alois Cochard
8 oct 2010 a las 15:44
-
@Alois Cochard, así me pareció. No soy un experto en compiladores, solo juego uno en Stack Overflow. 🙂
– Profesor Falken
8 oct 2010 a las 20:12
aparentemente, no puedes tener
-
en una etiqueta. cminusminus lo es.– aaronasterling
8 oct 2010 a las 14:29
No sé sobre la calidad de la implementación, pero LLVM parece tener mucha más acción en sus listas de correo.
– Bill Lynch
8 oct 2010 a las 14:31
usar ‘mm’ es una forma común de expresar menos menos. Creo que se usa como una broma para muchos enlaces de c ++, como glibmm. ‘fácil–‘. No me imagino que los recién llegados sabrán buscar cmm aunque.
– Matt Carpintero
8 oct 2010 a las 14:32
@matt también, mmm ya existe como un lenguaje completamente diferente al C–.
– Thomas M. Du Buisson
11/10/2010 a las 16:10
@ThomasM.DuBuisson: ¿por qué dice “completamente diferente”? Desde su primer enlace: “Cmm es la implementación GHC del lenguaje C–“. Aunque no sé si esto era cierto cuando escribiste tu comentario hace 20 meses.
– dubiousjim
2 de junio de 2012 a las 6:42