Kompilacja i analiza
19 pojęć w 8 podgrupach, z prostymi definicjami i źródłami.
Przeglądaj kategorię
Analizy statyczne
Statyczne wyznaczanie faktów o wartościach i zmiennych w punktach programu przez propagację informacji po grafie przepływu sterowania.
Maksymalny ciąg kolejnych instrukcji, do którego sterowanie wchodzi tylko na początku i opuszcza tylko na końcu, bez rozgałęzień wewnątrz.
Graf skierowany, którego węzły to bloki podstawowe, a krawędzie reprezentują możliwe przejścia sterowania między nimi podczas wykonania.
Back end
Przydzielanie zmiennych programu do skończonej liczby rejestrów procesora, często modelowane jako kolorowanie grafu kolizji.
Końcowa faza kompilatora tłumacząca reprezentację pośrednią na kod docelowy maszyny, wybierając instrukcje i przydzielając zasoby.
Przekształcanie programu zachowujące jego semantykę, mające poprawić wydajność (szybkość, rozmiar, zużycie zasobów) wynikowego kodu.
Fazy front endu
Pierwsza faza kompilatora dzieląca strumień znaków kodu źródłowego na ciąg tokenów (leksemów) o ustalonych kategoriach.
Faza sprawdzająca znaczeniową poprawność programu (zgodność typów, zasięg, deklaracje) na podstawie drzewa składni i tablicy symboli.
Faza budująca z ciągu tokenów drzewo wyprowadzenia zgodne z gramatyką języka, sprawdzając poprawność strukturalną programu.
Model kompilacji
Bezpośrednie wykonywanie instrukcji programu źródłowego na podawanych danych bez wcześniejszej translacji do kodu maszynowego.
Tłumaczenie programu z języka źródłowego na równoważny program w języku docelowym (np. kod maszynowy lub kod pośredni) wykonywane przez kompilator przed uruchomieniem.
Tłumaczenie kodu pośredniego na kod maszynowy w trakcie wykonania programu, łączące przenośność interpretacji z szybkością kodu natywnego.
Podstawy formalne
Reprezentacje pośrednie
Drzewiasta reprezentacja struktury składniowej programu pomijająca szczegóły konkretnej składni, z węzłami odpowiadającymi konstrukcjom języka.
Reprezentacja programu niezależna od maszyny, generowana między front-endem a back-endem w celu uproszczenia translacji i optymalizacji.
Liniowa forma kodu pośredniego, w której każda instrukcja ma co najwyżej trzy operandy i odpowiada jednej operacji elementarnej.
Struktury kompilatora
System typow
Pozostałe grupy — Języki i teoria typów
Chcesz wykorzystać AI w swojej firmie?
Wdrażamy chatboty, agentów głosowych i automatyzacje dla MŚP. Pierwsza konsultacja jest bezpłatna.
Bezpłatna konsultacja