Przegląd kompilatorów C.

Nauczmy się tej koncepcji kompilatorów na przykładzie. Załóżmy, że byłeś w miejscu, w którym mówisz, że języki są zupełnie inne, a teraz masz problemy z podróżowaniem i chcesz się z nimi komunikować. W jaki sposób? Czy potrzebowałeś tłumacza, prawda? Zdecydujesz się na kogoś, kto rozumie twój język i tłumaczy, a osoba przeciwna zrozumie, co chcesz powiedzieć. W ten sam sposób pisalibyśmy nasz kod C w języku wysokiego poziomu, który jest zrozumiały dla człowieka. W jaki sposób program zrozumie, o co go poprosiliśmy? Tutaj pojawia się kompilator. Kompilator przekształca i tłumaczy język wysokiej klasy na język maszynowy (niski poziom) zrozumiały. Proces kompilacji ma podstawowe mechanizmy tłumaczenia, a także wykrywanie błędów. Kompilacja frontonu obejmuje analizę leksykalną, składniową i semantyczną. A na zapleczu kompilacja generuje i optymalizuje kod. Istnieje wiele kompilatorów w C, takich jak BDS, Clang, GCC, Interactive C, Lattice, Portable C Compiler, Visual Express itp. Poznajmy kilka z nich.

Objaśnienia do kompilatorów C.

Poniżej znajdują się najlepsze kompilatory C:

1) Borland Turbo C.

Turbo C jest jednym z podstawowych i popularnych kompilatorów języka programowania C. Zostało to wprowadzone po raz pierwszy w 1987 roku; był popularny ze względu na mały rozmiar, szybkość kompilacji i niską cenę. Po wydaniu Turbo C ++ w 1990 r. Oba kompilatory zostały połączone, a nazwa Turbo C przestała istnieć. W 2006 roku Embarcadero Technologies ponownie wydało Turbo C jako darmowe oprogramowanie. Czy pamiętasz ten niebieski ekran?

2) Kompilator Tiny C.

Kompilator Tiny C został zaprojektowany do pracy na wolnych komputerach z małą ilością miejsca na dysku. Jest to kompilator C procesora ARM. Ten kompilator zaczął obsługiwać system Windows od 2005 roku. Niektóre z jego funkcji są wymienione poniżej.

  1. Jego rozmiar pliku jest niewielki i według właściciela tego kompilatora (Fabrice Bellard). Szybkość tego kompilatora jest około dziewięć razy szybsza niż GCC. Kompilacja, kompilacja i łączenie kodu były głównymi atrybutami branymi pod uwagę przy pomiarze szybkości tego kompilatora.
  2. Kompilator ten zawierał wiele funkcji specyficznych dla kompilatora, aby zwiększyć opcjonalną pamięć, moduł sprawdzania powiązań i miał większą stabilność kodu.
  3. Ten kompilator umożliwia automatyczne wykonywanie programów podczas kompilacji tylko przy użyciu argumentów wiersza poleceń. W ten sposób programy są uruchamiane w systemie UNIX przy użyciu skryptów powłoki. Najnowsza wersja została wydana w grudniu 2017 r.

3) Przenośny kompilator C.

Przenośny kompilator C (PCC) był bardzo wcześnie używanym i uznanym kompilatorem języka programowania C, który jest prawie w połowie 1970 roku. Ten kompilator miał długą żywotność. Było to powszechne w pewnym okresie, ponieważ wiele kompilatorów C było na nim opartych. Zalety PCC zależały od jego możliwości i prognoz prawdopodobieństwa. Kompilator PCC został stworzony tak, aby pliki źródłowe były zależne od maszyny, nie wszystkie, ale tylko kilka. Może wykrywać błędy składniowe i wykonywać doskonałe kontrole poprawności. Nowa wersja PCC została wydana 10 grudnia 2014 r.

4) GCC

Kolekcja kompilatorów GNU to kompilator stworzony przez Projekt GNU. Obsługuje wiele języków programowania i jest fundacją wolnego oprogramowania na podstawie Powszechnej Licencji Publicznej. Ten kompilator został wydany po raz pierwszy w 1987 roku i na początku obsługiwał tylko język programowania C. Powoli rozszerzył się na C ++, Java, Android i IOS. Tutaj każdy z różnych kompilatorów językowych ma swój własny program, który odczytuje napisany kod i wysyła kod maszynowy jako dane wyjściowe. Wszystkie mają wspólną strukturę wewnętrzną. Podczas pisania języka wysokiego poziomu, zgodnie z językiem, w którym jest zapisywany, kompilator analizuje kod w tym języku i tworzy abstrakcyjne drzewo składniowe. GCC używa parserów LALR, ale powoli przeszedł na parsery z rekurencyjnym opadaniem dla C w 2006 roku. Przechodząc do części optymalizacji, jak już wiadomo, może to wystąpić podczas dowolnej fazy kompilacji. Jednak tutaj optymalizacje zbiorcze są wykonywane przed wygenerowaniem kodu i po składni, analizie semantycznej. Poniżej znajduje się kilka optymalizacji przeprowadzonych przez GCC.

  1. Może wyeliminować elementy Dead Code.
  2. Może wyeliminować nadmiarowość na poziomie kodu.
  3. Wymiana agregatów w odniesieniu do poziomu skalarnego.
  4. Może przeprowadzać optymalizacje za pomocą tablic.

W GCC back-end jest określony przez makra preprocesora i funkcje specyficzne dla konkretnej architektury. Ten kod jest na ogół budowany przez najpierw wywołanie małego kodu fragmentu, który jest powiązany z każdym wzorcem i wygenerowanie instrukcji z zestawu instrukcji. Odbywa się to za pomocą rejestrów, przesunięć i adresów wybranych podczas fazy ponownego ładowania. Obecna wersja GCC to 9.2, która została wydana 12 sierpnia 2019 r.

5) Clang

  1. Szczęk; w tym C jest także kompilatorem języków programowania C ++, Objective-C i Object-C ++. Ten kompilator używa LLVM do kompilacji związanych z kodem zaplecza. Ten kompilator został zaprojektowany tak, aby działał jako zamiennik GCC, obsługując wiele jego flag kompilacji i rozszerzeń językowych.
  2. Clang ma wielu współpracowników, w tym Apple, Microsoft, Google, Sony i Intel. To oprogramowanie typu open source. LLVM został po raz pierwszy użyty przez GCC do kompilacji interfejsu, ale GCC spowodował pewne problemy dla programistów w Apple, ponieważ kod źródłowy jest duży i trudny w użyciu. Więc wymyślili Clanga.
  3. Jednym z głównych celów Clanga jest zapewnienie architektury opartej na bibliotece. Został zaprojektowany, aby zachować więcej informacji podczas procesu kompilacji niż GCC. Pomaga to również zachować ogólny kształt oryginalnego kodu.
  4. Raport błędów generowany przez Clanga podczas kompilacji jest zawsze szczegółowy i konkretny w formacie do odczytu maszynowego. Clang zawsze dążył do zmniejszenia nadmiernego wykorzystania miejsca w pamięci i zwiększenia szybkości kompilacji w porównaniu z GCC, a dzięki tym cechom stał się jednym z najszybciej rozwijających się używanych kompilatorów w pewnym momencie. Ale z czasem wydajność Clanga zaczęła spadać. Raporty wykazały, że wyniki opóźniały się z prawie dużymi różnicami w porównaniu z GCC i zaczęły wykazywać wolniejsze działanie. Najnowsze porównania wskazują, że oba kompilatory wymyśliły i zwiększyły swoją wydajność i po raz kolejny stworzyły między nimi wielką konkurencję. Jednak GCC pozostaje na szczycie listy.

Wniosek

Chociaż dla C dostępnych jest wiele kompilatorów, GCC wyróżnia się obecnie jako jeden z najlepszych. Deklaracja zwycięzcy leży tutaj na podstawie trwałości, optymalizacji, szybkości oraz kontroli kodu / błędu / składni. Dzięki temu możemy jasno zrozumieć, że Kompilator jest ważnym filarem języków programowania. Bez ich pracy program, który piszemy, byłby po prostu śmieciem dla systemu.

Polecane artykuły

To był przewodnik po najlepszych kompilatorach C. Tutaj omawiamy wyjaśnienia kompilatorów C z pięcioma krótkimi punktami. Możesz także przeczytać nasz inny sugerowany artykuł, aby dowiedzieć się więcej-

  1. Kompilatory Python
  2. Kompilatory Java
  3. Jak zainstalować C
  4. Zalety C.
  5. Wprowadzenie do kompilatora PHP
  6. Kompilatory JavaScript