2010-04-12 14 views
8

W mojej klasie absolwentów konstrukcji kompilatorów wprowadzono pojęcie lattice. Trzy wykłady poświęcono kratom i jak na razie wydaje się interesującą styczną, ale dylemat polega na tym, że nie pomaga to w wyjaśnieniu, w jaki sposób kompilator rozwiązuje konkretny problem.W jaki sposób kratownica używana przez kompilator

Już omówiliśmy parsowanie i sprawdzanie typu. Zaraz rozpoczniemy analizę żywotności i alokację rejestru.

Uwaga, Nie szukam zasobów na kompilatory budowlane. Poniższa lista łączy obejmuje dość dobrze. To, czego szukam, to wyjaśnienie związku między kompilatorami i sieciami, punkty bonusowe dla większości przykładów.

Learning Resources on Parsers, Interpreters, and Compilers
How much of the compiler should we know?
Learning to write a compiler

+1

upewnij się, aby wziąć udział w zbliżających się klasę na analizie liveness, a teraz co najmniej jedna ważna zastosowanie krat w kompilatory;) –

+0

To prawie jak poszło. "Następna klasa jest na analizie żywości." Tydzień później: "Porozmawiajmy o sieciach, spotkajmy się, dołącz, najgłębsze granice, najmniejsze ograniczenia, ..." Następująca klasa: "Teraz, gdy rozumiesz wszystko, co musisz wiedzieć o analizie życia ..." Błagałbym że spałem przez zajęcia, z wyjątkiem tego, że mam ponad 10 stron notatek. –

+0

Heh, pamiętam te dokładne klasy z mojego pierwszego kursu kompilatora. Nauczyciel przedstawił temat jako "Matematyka pozaziemska" :-) –

Odpowiedz

4

Kraty są bardzo przydatna konstrukcja do reprezentowania stanu robiąc analizę statyczną na temat programu jest kompilowany - np. do usuwania martwego kodu wykrytego na podstawie analizy żywotności, dostępnych/bardzo zajętych wyrażeń, dotarcia do definicji, analizy znaku i stałej propagacji.

Tutaj jest bardzo dobry do odczytu, jeśli chcesz szczegóły: Lecture Notes on Static Analysis

Powiązane problemy