Weil C-Compiler fast allgegenwärtig und auf fast jeder Plattform verfügbar sind, durchlaufen viele (kompilierte) Sprachen diese Phase ihrer Entwicklung, um den Prozess zu starten.
In den frühen Phasen der Sprachentwicklung, um zu sehen, ob die Sprache machbar ist, besteht der einfachste Weg, einen funktionierenden Compiler zu finden, darin, einen Compiler zu bauen, der Ihre Sprache in C umwandelt und dann den nativen C-Compiler die eigentliche Binärdatei erstellt. p>
Das Problem dabei ist, dass sprachspezifische Konstrukte verloren gehen und somit potentielle Optimierungsmöglichkeiten verpasst werden können. Daher erhalten die meisten Sprachen in der zweiten Phase ihren eigenen dedizierten Compiler front end
, der sprachspezifische Konstrukte versteht und somit Optimierungsstrategien bereitstellen kann diese Konstrukte.
C ++ hat vor zwei Jahrzehnten Phase 1 und Phase 2 durchlaufen. So ist es leicht, ein 'Frontend' eines Compilers zu finden, der C ++ gewidmet ist und ein Zwischenformat erzeugt, das direkt an ein Backed übergeben wird. Aber Sie können immer noch Versionen von C ++ finden, die vor dem Kompilieren in C (als Zwischenformat) übersetzt werden.
Nein. Dies ist ein Mythos , der auf der Tatsache basiert, dass eine sehr frühe Version von Stroustrups Arbeit so umgesetzt wurde. C ++ - Compiler erzeugen Maschinencode fast genau so wie C-Compiler.
Heute ist der einzige mir bekannte C ++ - Compiler, der C-Code erstellt, Comeau . Es kann ein oder zwei mehr für Embedded-Ziele geben, aber es ist im Grunde keine Mainstream-Sache.
Dies ist nicht durch den Standard definiert. Sicherlich ist das Kompilieren zu C-Quelle ein vernünftiger Weg, dies zu tun. Es erfordert nur, dass die Zielplattform einen C-Compiler mit einem vernünftigen Maß an Übereinstimmung hat, so dass es ein sehr portabler Weg ist, Dinge zu tun. Der Nachteil ist die Geschwindigkeit. Wahrscheinlich leidet die Kompilierungsgeschwindigkeit und möglicherweise auch die Ausführungsgeschwindigkeit (aufgrund von vielen Umsetzungen für beispielsweise virtuelle Funktionen, die den Compiler daran hindern, vollständig zu optimieren). Vor nicht allzu langer Zeit gab es eine Firma, die einen sehr netten C ++ Compiler hatte, der genau das tat. Leider erinnere ich mich nicht an den Namen der Firma und ein kurzer Google-Name brachte den Namen nicht zurück. Der Besitzer des Unternehmens war ein aktiver Teilnehmer des ISO C ++ - Komitees und Sie konnten Ihren Code direkt auf der Homepage testen, die auch einige recht ordentliche Ressourcen über C ++ hatte. Edit: Einer meiner Kollegen Poster hat mich nur daran erinnert. Ich habe natürlich über Comeau gesprochen.
Tags und Links c c++ compiler-construction