2010-10-08 3 views
55

Nachdem ich ein bisschen gelernt habe, wie LLVM funktioniert, bin ich sehr gespannt darauf, wie portabler Low-Level-Code generiert werden kann und wie modular dieses "Ding" aufgebaut ist.Wie vergleicht sich C - mit LLVM?

Aber ich entdeckte heute die Existenz von C--, die einige Konzepte mit LLVM zu teilen scheint.

Ich bin also auf der Suche nach Informationen, die mir helfen, die Hauptunterschiede zwischen diesen beiden Projekten zu verstehen ... und warum beide existieren.

Für mich sieht LLVM ein bisschen wie das ultimative Schweizer Taschenmesser für die Compiler-Infrastruktur aus, und C-- sieht weit weniger fortgeschritten aus.

+5

offenbar, können Sie‘haben' -' in einem Tag. cminusminus ist es. – aaronasterling

+0

danke für die Korrektur :-) –

+0

Ich weiß nicht über die Qualität der Implementierung, aber LLVM scheint viel mehr Aktion auf seinen Mailing-Listen zu haben. –

Antwort

52

Sie unterscheiden sich darin, wie ausdrucksstark das Low-Level-Maschinentypsystem ist.

Die LLVM Maschine ist ziemlich ausdrucksstark. Die C-- Maschine hingegen trägt eine große Verantwortung für das Sprach-Frontend. Zitiert aus der C-- FAQ: „einfach, C-- keine High-Level-Typen hat --- es unterscheidet nicht selbst-Gleitkommavariablen von Integer-Variablen Dieses Modell gibt die vordere Ende der totale Kontrolle über Darstellung und Typsystem“

Auch optisch sehen sie sehr unterschiedlich aus. C-- sieht viel wie C aus, LLVM sieht dem Assembler sehr ähnlich.

Pragmatisch hat LLVM jetzt viel mehr Momentum. Es hat einen JIT-Compiler, Apple verwendet es für 3D pipeline things und Leute verwenden es zu connect to GCC und alle Arten von weird und wonderful Dinge. Jemand nannte es "almost absurdly easy to work with".

Auf der anderen Seite ist C--viel kleiner und wahrscheinlich einfacher vollständig zu verstehen. (Ich stelle mir ein normaler Mensch mit einem gewissen Engagement voll alle Aspekte davon verstehen.)

+1

Also, wenn ich richtig verstehe der Hauptunterschied ist die Abstraktionsebene der Zwischendarstellung von Thesen Compiler verwendet. Danke! –

+6

@Alois Cochard, so schien es mir. Ich bin kein Compiler-Experte, ich spiele nur einen auf Stack Overflow. :-) –

+0

Deine Links zu cminusminus.org scheinen zu etwas komplett anderem zu führen. – Ruslan