Różnica Między Fazą A Przejściem W Kompilatorze

Różnica Między Fazą A Przejściem W Kompilatorze
Różnica Między Fazą A Przejściem W Kompilatorze

Wideo: Różnica Między Fazą A Przejściem W Kompilatorze

Wideo: Różnica Między Fazą A Przejściem W Kompilatorze
Wideo: Instalacja elektryczna 230V i 400V porównanie wady i zalety. Płyta indukcyjna, piekarnik elektryczny 2024, Marzec
Anonim

Faza vs przejście w kompilatorze

Ogólnie rzecz biorąc, kompilator to program komputerowy, który czyta program napisany w jednym języku, zwanym językiem źródłowym, i tłumaczy go na inny język, nazywany językiem docelowym. Tradycyjnie językiem źródłowym był język wysokiego poziomu, taki jak C ++, a językiem docelowym był język niskiego poziomu, taki jak język asemblera. Zatem generalnie 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 jakąś formę jego reprezentacji). Kompilator jest podzielony na części dla wygody konstrukcji. Faza jest często używana do wywoływania takiej pojedynczej niezależnej części kompilatora.

Co to jest przepustka w kompilatorze?

Standardowym sposobem klasyfikacji kompilatorów jest liczba „przebiegów”. Zwykle kompilacja jest procesem wymagającym stosunkowo dużej ilości 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ę. Ze względu na to ograniczenie zasobów sprzętowych we wczesnych komputerach, kompilatory zostały podzielone na mniejsze podprogramy, które wykonały swoją część pracy, przeglądając kod źródłowy (wykonując „przejście” przez źródło lub inną jego formę) i przeprowadzając analizę, transformacje i zadania tłumaczenia osobno. 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ą szybciej niż kompilatory wieloprzebiegowe. Dlatego nawet w czasach, gdy istniały ograniczenia zasobów, języki były projektowane tak, aby mogły być kompilowane w jednym przebiegu (np. Pascal). Z drugiej strony, typowy kompilator wieloprzebiegowy składa się z kilku głównych etapów. Pierwszym etapem jest skaner (zwany także analizatorem leksykalnym). Skaner czyta program i konwertuje go na ciąg tokenów. Drugi etap to parser. Konwertuje ciąg tokenów na drzewo parsowania (lub abstrakcyjne drzewo składniowe), które przechwytuje składniową strukturę programu. Następnym 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ówisz o budowie kompilatora. Początkowo kompilatorami były wszystkie proste fragmenty pojedynczego, monolitycznego oprogramowania napisanego przez jedną osobę w celu kompilacji prostego języka. Kiedy jednak 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ą różnych faz jest to, że rozwój kompilatora może być rozłożony na zespół programistów. Ponadto poprawia modułowość i ponowne wykorzystanie, umożliwiając zastępowanie faz ulepszonymi lub dodawanie dodatkowych faz (takich jak dalsze optymalizacje) do kompilatora. Proces podziału kompilacji na fazy został wprowadzony przez PQCC (Production Quality Compiler-Compiler Project) na Carnegie Melon University. Wprowadzili terminy front end, middle end i back end. Większość kompilatorów ma co najmniej dwie fazy. Ale zazwyczaj back-end i front-end obejmują te fazy.

Jaka jest różnica między fazą a przejściem w kompilatorze?

Faza i przejście to dwa terminy używane w obszarze kompilatorów. Przebieg to pojedynczy moment, w którym kompilator przechodzi przez kod źródłowy lub inną jego reprezentację. Zazwyczaj większość kompilatorów ma co najmniej dwie fazy zwane front-end i back-end, podczas gdy mogą one być jednoprzebiegowe lub wieloprzebiegowe. Faza służy do klasyfikowania kompilatorów według konstrukcji, a passa służy do klasyfikowania kompilatorów zgodnie z ich działaniem.

Zalecane: