Techniki Kompilacji, Laboratorium, Opis
dr inż. Grzegorz J. Nalepa
10.01.2007
Spis rzeczy
1
LAB: Wprowadzenie
1
.
1
Ćwiczenie: Opis i cel laboratorium
1
.
2
Ćwiczenie: Warunki zaliczenia
1
.
3
Ćwiczenie: Pojęcia
1
.
4
Ćwiczenie: Środowisko pracy
1
.
5
Ćwiczenie: Powtórka Unix
2
LAB: Od powłoki
Sh
jako interpretera do kompilatora
GCC
2
.
1
Ćwiczenie: Powłoka jako interpreter poleceń
2
.
2
Ćwiczenie: Konstrukcje programistyczne w powłoce
Sh
2
.
3
Ćwiczenie: Proste skrypty
2
.
4
Ćwiczenie: Powłoka jako interpreter programów (skryptów)
2
.
5
Ćwiczenie: Kompilacja prostego programu przy pomocy kompilatora
GCC
2
.
6
Ćwiczenie: Wykrywanie usterek w kodzie
2
.
7
Ćwiczenie: Błędy w kodzie
2
.
8
Ćwiczenie: Dołączanie bibliotek do własnych programów
2
.
9
PYTANIA
2
.
10
BIBLIOGRAFIA
3
LAB:
GCC
- proces kompilacji
3
.
1
DO PRZYGOTOWANIA
3
.
2
Ćwiczenie: Dekompozycja programu na moduły
3
.
3
Ćwiczenie: Kompilacja programu wielomodułowego
3
.
4
Ćwiczenie: Linkowanie modułów
3
.
5
Ćwiczenie: Przebieg kompilacji
3
.
6
Ćwiczenie: Preprocesor
3
.
7
Ćwiczenie: Dyrektywy preprocesora
3
.
8
Ćwiczenie: Poprawne pliki nagłówkowe
3
.
9
Ćwiczenie: Generator kodu, Assembler i Linker
3
.
10
Ćwiczenie: Podsumowanie
3
.
11
BIBLIOGRAFIA
4
LAB: Narzędzia
BinUtils
i środowisko pracy kompilatora
4
.
1
Ćwiczenie: Narzędzia
BinUtils
i pokrewne
4
.
2
Ćwiczenie: Narzędzie gcov
4
.
3
Ćwiczenie: Profiler gprof
4
.
4
Ćwiczenie: Narzędzie Objdump
4
.
5
Ćwiczenie: Optymalizacja kodu
4
.
6
Ćwiczenie: Środowisko pracy kompilatora
4
.
7
BIBLIOGRAFIA
5
LAB: Debugger
5
.
1
Ćwiczenie: Wprowadzenie
5
.
2
Ćwiczenie: Uruchamianie programu
5
.
3
Ćwiczenie:
Breakpoints
5
.
4
Ćwiczenie: Oglądanie kodu, danych i informacji
5
.
5
Ćwiczenie: Śledzenie zmian danych
5
.
6
Ćwiczenie: Modyfikowanie danych i wywoływanie funkcji
5
.
7
Ćwiczenie:
Core
i ,,sekcja zwłok''
5
.
8
Ćwiczenie: Debuggowanie pracującego programu
5
.
9
Ćwiczenie: Deassemblacja
5
.
10
BIBLIOGRAFIA
6
LAB: GNU Make
6
.
1
Ćwiczenie: Wprowadzenie
6
.
2
Ćwiczenie: Ogólna budowa
Makefile
6
.
3
Ćwiczenie: Prosty plik
Makefile
6
.
4
Ćwiczenie: Kiedy przydaje się
Make
?
6
.
4
.
0
.
1
Przykład 1
6
.
4
.
0
.
2
Przykład 2
6
.
4
.
0
.
3
Przykład 3
6
.
5
Ćwiczenie: Cele pozorne
6
.
6
Ćwiczenie: Zmienne i poprawny plik
6
.
7
Ćwiczenie: Zaawansowany
Makefile
6
.
8
Ćwiczenie: Konwencje make, nie tylko kompilacja
6
.
9
Ćwiczenie: Podsumowanie i przydatne opcje
Make
6
.
10
BIBLIOGRAFIA
7
LAB: KOLOKWIUM 1
8
LAB: FLex - wprowadzenie
8
.
1
Ćwiczenie: Wprowadzenie, zasada działania Flexa
8
.
2
Ćwiczenie: Prosty przykład
8
.
3
Ćwiczenie: Rozbudowane przykłady
8
.
4
Ćwiczenie: Struktura pliku Flexa
8
.
5
Ćwiczenie: Podstawy wywoływania Flexa
8
.
6
Ćwiczenie: Przykłady reguł Flexa
8
.
7
Ćwiczenie: Przykłady akcji Flexa
8
.
8
Ćwiczenie: Makefile dla skanera
8
.
9
BIBLIOGRAFIA
9
LAB: FLex - zaawansowany
9
.
1
Ćwiczenie: Dopasowywanie wzorców przez Flex
9
.
2
Ćwiczenie: Reguły złożone
9
.
3
Ćwiczenie: Przykład usuwania komentarzy C
9
.
4
Ćwiczenie: Przykład usuwania komentarzy C++
9
.
5
Ćwiczenie: Przykład wczytywania stringów w C
9
.
6
Ćwiczenie: Śledzenie pracy i debugging skanera
9
.
7
Ćwiczenie: yylex(), wywoływanie skanera, integracja z parserem Yacc
9
.
8
BIBLIOGRAFIA
10
LAB: Bison (Yacc) - wprowadzenie
10
.
1
Ćwiczenie: Wprowadzenie, zasada działania
10
.
2
Ćwiczenie: Struktura pliku gramatyki
10
.
3
Ćwiczenie: Prosty przykład gramatyki i podstawowy skaner
10
.
4
Ćwiczenie: Praca z Bisonem
10
.
5
Ćwiczenie: Testowanie przykładu
10
.
6
Ćwiczenie: Wartości semantyczne
10
.
7
Ćwiczenie: Rozbudowywanie przykładu
10
.
8
Ćwiczenie: Pełny kalkulator RPN
10
.
9
Ćwiczenie: Makefile dla Bisona
10
.
10
BIBLIOGRAFIA
11
LAB: Bison - zaawansowany
11
.
1
Ćwiczenie: Tworzenie kalkulatora inifixowego
11
.
2
Ćwiczenie: Obsługa błędow w parserze
11
.
3
Ćwiczenie: Śledzenie pracy, debugging, optymalizacja
11
.
4
Ćwiczenie: Integracja z generatorem Flex
11
.
5
Ćwiczenie: Skaner dla kalkulatora
11
.
6
Ćwiczenie: Łączenie kodu Flexa i Bisona
11
.
7
Ćwiczenie: Tworzenie pełnego parsera, translatora - podsumowanie
11
.
8
BIBLIOGRAFIA
12
LAB: KOLOKWIUM 2
13
LAB: Tworzenie bibliotek i metody linkowania
13
.
1
Ćwiczenie: Metody linkowania
13
.
2
Ćwiczenie: Linkowanie prostego programu
13
.
3
Ćwiczenie: Biblioteki statyczne
13
.
4
Ćwiczenie: Przygotowanie biblioteki dynamicznej
13
.
5
Ćwiczenie: Udostępnianie biblioteki dzielonej
13
.
6
Ćwiczenie: Kompilowanie z biblioteką dzieloną
13
.
7
Ćwiczenie: Przygotowanie dynamicznie ładowanej biblioteki dzielonej (DLL
13
.
8
BIBLIOGRAFIA
14
LAB: Dynamiczna alokacja pamięci
14
.
1
Ćwiczenie: Sposoby alokacji pamięci
14
.
2
Ćwiczenie: Alokacja statyczna
14
.
3
Ćwiczenie: Struktury danych
14
.
4
Ćwiczenie: Dynamiczna alokacja pamięci
14
.
5
Ćwiczenie: Zwalnianie pamięci
14
.
6
Ćwiczenie: Wycieki Pamięci
14
.
7
Ćwiczenie: Przepełnienie buforów
14
.
8
Ćwiczenie: Śledzenie pracy programu
14
.
9
Ćwiczenie: Diagnostyka pamięci
14
.
10
Ćwiczenie: Metody zarządzania pamięcią
14
.
11
BIBLIOGRAFIA
15
LAB: ZALICZENIE
About this document ...
Grzegorz J. Nalepa 2007-10-22