Nr 01 · Słownik · Teoria informatyki · Języki i teoria typów

Kompilacja i analiza

19 pojęć w 8 podgrupach, z prostymi definicjami i źródłami.

Analizy statyczne · 3

  • 01analiza przepływu danychStatyczne wyznaczanie faktów o wartościach i zmiennych w punktach programu przez propagację informacji po grafie przepływu sterowania.
  • 02blok podstawowyMaksymalny ciąg kolejnych instrukcji, do którego sterowanie wchodzi tylko na początku i opuszcza tylko na końcu, bez rozgałęzień wewnątrz.
  • 03graf przepływu sterowaniaCFG (control-flow graph)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 · 3

  • 01alokacja rejestrówPrzydzielanie zmiennych programu do skończonej liczby rejestrów procesora, często modelowane jako kolorowanie grafu kolizji.
  • 02generacja koduKońcowa faza kompilatora tłumacząca reprezentację pośrednią na kod docelowy maszyny, wybierając instrukcje i przydzielając zasoby.
  • 03optymalizacja koduPrzekształcanie programu zachowujące jego semantykę, mające poprawić wydajność (szybkość, rozmiar, zużycie zasobów) wynikowego kodu.

Fazy front endu · 3

  • 01analiza leksykalnaskanerPierwsza faza kompilatora dzieląca strumień znaków kodu źródłowego na ciąg tokenów (leksemów) o ustalonych kategoriach.
  • 02analiza semantycznaFaza sprawdzająca znaczeniową poprawność programu (zgodność typów, zasięg, deklaracje) na podstawie drzewa składni i tablicy symboli.
  • 03analiza składniowaparsingFaza budująca z ciągu tokenów drzewo wyprowadzenia zgodne z gramatyką języka, sprawdzając poprawność strukturalną programu.

Model kompilacji · 3

  • 01interpretacjaBezpośrednie wykonywanie instrukcji programu źródłowego na podawanych danych bez wcześniejszej translacji do kodu maszynowego.
  • 02kompilacjaTł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.
  • 03kompilacja JITJIT (just-in-time)Tłumaczenie kodu pośredniego na kod maszynowy w trakcie wykonania programu, łączące przenośność interpretacji z szybkością kodu natywnego.

Podstawy formalne · 1

  • 01gramatyka bezkontekstowaCFGFormalna gramatyka, w której każda produkcja zastępuje pojedynczy symbol nieterminalny ciągiem symboli, używana do opisu składni języków.

Reprezentacje pośrednie · 3

  • 01ASTdrzewo składni abstrakcyjnejDrzewiasta reprezentacja struktury składniowej programu pomijająca szczegóły konkretnej składni, z węzłami odpowiadającymi konstrukcjom języka.
  • 02kod pośredniIR (intermediate representation)Reprezentacja programu niezależna od maszyny, generowana między front-endem a back-endem w celu uproszczenia translacji i optymalizacji.
  • 03kod trójadresowyLiniowa forma kodu pośredniego, w której każda instrukcja ma co najwyżej trzy operandy i odpowiada jednej operacji elementarnej.

Struktury kompilatora · 1

  • 01tablica symboliStruktura danych kompilatora przechowująca informacje o identyfikatorach programu (typ, zasięg, lokalizacja) i wspierająca ich wyszukiwanie.

System typow · 2

  • 01sprawdzanie typówWeryfikacja, że operacje w programie są stosowane do argumentów zgodnych z regułami systemu typów, zwykle w czasie kompilacji.
  • 02unifikacjaWyznaczanie podstawienia zmiennych czyniącego dwa wyrażenia (termy lub typy) syntaktycznie identycznymi, kluczowe dla inferencji typów.

Pozostałe grupy — Języki i teoria typów

Grupa pojęć · Języki i teoria typów19 haseł