Wie schneidet C– im Vergleich zu LLVM ab?

Lesezeit: 2 Minuten

Benutzeravatar von Alois Cochard
Alois Cochard

Nachdem ich ein bisschen gelernt habe, wie LLVM funktioniert, bin ich wirklich gespannt, wie portierbarer Low-Level-Code generiert werden kann und wie modular dieses „Ding“ aufgebaut ist.

Aber ich habe heute die Existenz von C entdeckt, das einige Konzepte mit LLVM zu teilen scheint.

Also suche ich 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 viel weniger fortgeschritten aus.

  • Anscheinend kannst du es haben - in einem Etikett. cminusminus ist es.

    – Aaronasterling

    8. Oktober 2010 um 14:29 Uhr

  • Ich weiß nichts über die Qualität der Implementierung, aber LLVM scheint viel mehr Action auf seinen Mailinglisten zu haben.

    – Bill Lynch

    8. Oktober 2010 um 14:31 Uhr

  • Die Verwendung von “mm” ist eine übliche Art, Minus Minus auszudrücken. Ich glaube, es wird als Witz für viele C++-Bindungen verwendet, wie z. B. glibmm. ‘glib–‘. Ich kann mir nicht vorstellen, dass Neuankömmlinge wissen werden, wie man nach cmm sucht.

    – Matt Tischler

    8. Oktober 2010 um 14:32 Uhr

  • @matt auch, cmm existiert bereits als eine ganz andere Sprache als c–.

    – Thomas M. DuBuisson

    11. Oktober 2010 um 16:10 Uhr

  • @ThomasM.DuBuisson: Warum sagst du “ganz anders”? Aus Ihrem ersten Link: “Cmm ist die GHC-Implementierung der C–Sprache.” Obwohl ich nicht weiß, ob das wahr war, als Sie Ihren Kommentar vor 20 Monaten geschrieben haben.

    – dubiosjim

    2. Juni 2012 um 6:42 Uhr

Benutzeravatar von Prof. Falken
Prof. Falken

Sie unterscheiden sich darin, wie ausdrucksstark das Maschinentypsystem auf niedriger Ebene ist.

Das LLVM Maschine ist ziemlich ausdrucksstark. Das C– Maschine hingegen überträgt viel Verantwortung auf das Sprach-Frontend. Zitat aus der C–Häufig gestellte Fragen: “einfach, C– hat keine High-Level-Typen – es unterscheidet nicht einmal Gleitkommavariablen von Integer-Variablen. Dieses Modell gibt dem Frontend die vollständige Kontrolle über die Darstellung und das Typsystem.

Auch optisch sehen sie ganz anders aus. C– sieht sehr nach C aus, LLVM sieht sehr nach Assembler aus.

Pragmatisch gesehen hat LLVM derzeit viel mehr Dynamik. Es hat einen JIT-Compiler, für den Apple ihn verwendet 3D-Pipeline-Dinge und die Leute benutzen es dazu mit GCC verbinden und allerlei seltsam und wunderbar Dinge. Jemand hat es genannt “fast absurd einfach zu handhaben“.

Auf der anderen Seite C– ist viel kleiner und wahrscheinlich leichter vollständig zu verstehen. (Ich kann mir vorstellen, dass ein normaler Mensch mit etwas Hingabe das voll und ganz verstehen kann alle Aspekte davon.)

  • Also, wenn ich das richtig verstehe, ist der Hauptunterschied die Abstraktionsebene der Zwischendarstellung, die von diesem Compiler verwendet wird. Danke !

    – Alois Cochard

    8. Oktober 2010 um 15:44 Uhr


  • @Alois Cochard, so kam es mir vor. Ich bin kein Compiler-Experte, ich spiele nur einen auf Stack Overflow. 🙂

    – Prof. Falken

    8. Oktober 2010 um 20:12 Uhr

1412490cookie-checkWie schneidet C– im Vergleich zu LLVM ab?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy