Faza vs przejście w kompilatorze
Ogólnie rzecz biorąc, kompilator to program komputerowy, który czyta program napisany w jednym języku, który nazywa się językiem źródłowym, i tłumaczy go na inny język, który jest nazywany językiem docelowym. Tradycyjnie język źródłowy był językiem wysokiego poziomu, takim jak C ++, a językiem docelowym był język niskiego poziomu, taki jak język asemblera. Ogólnie rzecz biorąc, kompilatory mogą być postrzegane jako tłumacze, którzy tłumaczą z jednego języka na inny. Pass i Phase to dwa terminy często używane w kompilatorach. Liczba przebiegów kompilatora to liczba przejść przez źródło (lub inną formę jego reprezentacji). Kompilator jest podzielony na części dla wygody konstrukcji. Faza jest często używana do wywołania takiej pojedynczej niezależnej części kompilatora.
Co to jest przepustka w kompilatorze?
Standardowym sposobem klasyfikowania kompilatorów jest liczba „przebiegów”. Zazwyczaj kompilacja jest procesem stosunkowo wymagającym dużych zasobów i początkowo komputery nie miały wystarczającej ilości pamięci, aby pomieścić taki program, który wykonał całą pracę. Z powodu tego ograniczenia zasobów sprzętowych na wczesnych komputerach kompilatory zostały podzielone na mniejsze podprogramy, które wykonały swoje częściowe zadanie, przeglądając kod źródłowy (wykonując „przejście” nad źródłem lub inną jego formą) i przeprowadzając analizę , przekształcenia i zadania tłumaczeniowe oddzielnie. Tak więc, w zależności od tej klasyfikacji, kompilatory są identyfikowane jako kompilatory jednoprzebiegowe lub wieloprzebiegowe.
Jak sama nazwa wskazuje, kompilatory jednoprzebiegowe kompilują się w jednym przebiegu. Łatwiej jest napisać kompilator jednoprzebiegowy, a także działają one szybciej niż kompilatory wieloprzebiegowe. Dlatego nawet w czasach ograniczeń zasobów języki zostały zaprojektowane w taki sposób, aby można je było skompilować w jednym przebiegu (np. Pascal). Z drugiej strony typowy kompilator wieloprzebiegowy składa się z kilku głównych etapów. Pierwszym etapem jest skaner (znany również jako analizator leksykalny). Skaner odczytuje program i konwertuje go na ciąg tokenów. Drugi etap to analizator składni. Konwertuje ciąg tokenów na drzewo analizujące (lub abstrakcyjne drzewo składniowe), które przechwytuje strukturę składniową programu. Kolejnym etapem jest interpretacja semantyki struktury syntaktycznej. Następują etapy optymalizacji kodu i końcowy etap generowania kodu.
Co to jest faza w kompilatorze?
Termin faza często pojawia się, gdy mówimy o budowie kompilatora. Początkowo kompilatory były każdym prostym kawałkiem pojedynczego, monolitycznego oprogramowania napisanego przez jedną osobę do kompilacji prostego języka. Ale kiedy kod źródłowy tłumaczonego języka staje się złożony i duży, kompilator został podzielony na wiele (względnie niezależnych) faz. Zaletą posiadania różnych faz jest to, że rozwój kompilatora można rozdzielić między zespół programistów. Ponadto poprawia modułowość i ponowne użycie, umożliwiając zastąpienie faz ulepszonymi lub dodanie dodatkowych faz (takich jak dalsze optymalizacje) do kompilatora. Proces podziału kompilacji na fazy został wprowadzony przez PQCC (Projekt jakości kompilatora-kompilatora) na Uniwersytecie Carnegie Melon. Wprowadzili warunki przód, środek i tył. Większość kompilatorów ma co najmniej dwie fazy. Ale zwykle tylny i przedni koniec hermetyzują te fazy.
Jaka jest różnica między fazą a przebiegiem w kompilatorze?
Faza i przebieg to dwa terminy używane w obszarze kompilatorów. Przekazanie to jednorazowe przejście kompilatora przez kod źródłowy lub inną jego reprezentację. Zazwyczaj większość kompilatorów ma co najmniej dwie fazy zwane frontem i back-endem, podczas gdy mogą być jednoprzebiegowe lub wieloprzebiegowe. Faza służy do klasyfikowania kompilatorów zgodnie z budową, natomiast pass służy do klasyfikowania kompilatorów według sposobu ich działania.