Podstawy Informatyki Jezyki programowania cd
Transkrypt
Podstawy Informatyki Jezyki programowania cd
Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Podstawy Informatyki Języki programowania c.d. dr inż. Alina MOMOT [email protected] http://zti.polsl.pl/AMomot/pi dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Plan wykładu Asembler maszyny W Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy 2 Rozszerzenia asemblera maszyny W Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 3 Segmentacja Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja 4 Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu 1 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Założenia Składnia instrukcji programu: [< etykieta >:] < kod > [< argument >] Opcjonalna etykieta to nazwa zakończona dwukropkiem Kod jest wymagany, może to być kod rozkazu: DOD, ODE, POB, ŁAD, SOB, SOM, STP lub dyrektywa (pseudorozkaz): KON – koniec generacji kodu, RPA - rezerwacja pamięci, RST - rezerwacja pamięci dla stałej Opcjonalnym argumentem może być etykieta lub liczba dziesiętna dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład programu samomodyfikującego się Tekst źródłowy programu ET: KONIEC: ST1: A: POB A SOM KONIEC POB ET DOD ST1 ŁAD ET SOB ET STP RST 1 RST 5 RST 67 RST -1 KON dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład programu samomodyfikującego się Tekst źródłowy programu 0 ET: 1 2 3 4 5 6 KONIEC: 7 ST1: 8 A: 9 10 Tablica Rozkaz DOD ODE ŁAD POB SOB SOM STP POB A SOM KONIEC POB ET DOD ST1 ŁAD ET SOB ET STP RST 1 RST 5 RST 67 RST -1 KON dr inż. Alina MOMOT Języki programowania c.d. T1 Kod 001 010 011 100 101 110 111 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład programu samomodyfikującego się Tekst źródłowy programu 0 ET: 1 2 3 4 5 6 KONIEC: 7 ST1: 8 A: 9 10 Tablica Rozkaz DOD ODE ŁAD POB SOB SOM STP POB A SOM KONIEC POB ET DOD ST1 ŁAD ET SOB ET STP RST 1 RST 5 RST 67 RST -1 KON dr inż. Alina MOMOT Tablica Etykieta ET KONIEC ST1 A Języki programowania c.d. T1 Kod 001 010 011 100 101 110 111 T2 Adres 00000 00110 00111 01000 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład programu samomodyfikującego się Tekst źródłowy programu 0 ET: 1 2 3 4 5 6 KONIEC: 7 ST1: 8 A: 9 10 Kod maszynowy POB A SOM KONIEC POB ET DOD ST1 ŁAD ET SOB ET STP RST 1 RST 5 RST 67 RST -1 KON dr inż. Alina MOMOT 100 110 100 001 011 101 111 000 000 010 111 01000 00110 00000 00111 00000 00000 00000 00001 00101 00011 11111 Języki programowania c.d. Tablica Rozkaz DOD ODE ŁAD POB SOB SOM STP Tablica Etykieta ET KONIEC ST1 A T1 Kod 001 010 011 100 101 110 111 T2 Adres 00000 00110 00111 01000 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład programu samomodyfikującego się Tekst źródłowy programu 0 ET: 1 2 3 4 5 6 KONIEC: 7 ST1: 8 A: 9 10 Kod maszynowy POB A SOM KONIEC POB ET DOD ST1 ŁAD ET SOB ET STP RST 1 RST 5 RST 67 RST -1 KON dr inż. Alina MOMOT 100 110 100 001 011 101 111 000 000 010 111 01001 00110 00000 00111 00000 00000 00000 00001 00101 00011 11111 Języki programowania c.d. Tablica Rozkaz DOD ODE ŁAD POB SOB SOM STP Tablica Etykieta ET KONIEC ST1 A T1 Kod 001 010 011 100 101 110 111 T2 Adres 00000 00110 00111 01000 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład programu samomodyfikującego się Tekst źródłowy programu 0 ET: 1 2 3 4 5 6 KONIEC: 7 ST1: 8 A: 9 10 Kod maszynowy POB A SOM KONIEC POB ET DOD ST1 ŁAD ET SOB ET STP RST 1 RST 5 RST 67 RST -1 KON dr inż. Alina MOMOT 100 110 100 001 011 101 111 000 000 010 111 01010 00110 00000 00111 00000 00000 00000 00001 00101 00011 11111 Języki programowania c.d. Tablica Rozkaz DOD ODE ŁAD POB SOB SOM STP Tablica Etykieta ET KONIEC ST1 A T1 Kod 001 010 011 100 101 110 111 T2 Adres 00000 00110 00111 01000 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy PETLA: ET: KONIEC: POB N ODE ST1 SOM KONIEC ŁAD L POB TAB DOD S ŁAD S POB ET DOD ST1 ŁAD ET POB L SOB PETLA STP dr inż. Alina MOMOT ST1: S: N: TAB: L: RST 1 RST 0 RST 5 RST 7 RST 13 RST 21 RST 19 RST 3 RPA KON Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 1 PETLA: 2 3 4 ET: 5 6 7 8 9 10 11 12 KONIEC: POB N ODE ST1 SOM KONIEC ŁAD L POB 16 DOD S ŁAD S POB ET DOD ST1 ŁAD ET POB L SOB PETLA STP dr inż. Alina MOMOT 13 ST1: 14 S: 15 N: 16 TAB: 17 18 19 20 21 L: RST 1 RST 0 RST 5 RST 7 RST 13 RST 21 RST 19 RST 3 RPA KON Podgląd zmiennych: S=0 L=? Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 1 PETLA: 2 3 4 ET: 5 6 7 8 9 10 11 12 KONIEC: POB N ODE ST1 SOM KONIEC ŁAD L POB 17 DOD S ŁAD S POB ET DOD ST1 ŁAD ET POB L SOB PETLA STP dr inż. Alina MOMOT 13 ST1: 14 S: 15 N: 16 TAB: 17 18 19 20 21 L: RST 1 RST 0 RST 5 RST 7 RST 13 RST 21 RST 19 RST 3 RPA KON Podgląd zmiennych: S=7 L=4 Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 1 PETLA: 2 3 4 ET: 5 6 7 8 9 10 11 12 KONIEC: POB N ODE ST1 SOM KONIEC ŁAD L POB 18 DOD S ŁAD S POB ET DOD ST1 ŁAD ET POB L SOB PETLA STP dr inż. Alina MOMOT 13 ST1: 14 S: 15 N: 16 TAB: 17 18 19 20 21 L: RST 1 RST 0 RST 5 RST 7 RST 13 RST 21 RST 19 RST 3 RPA KON Podgląd zmiennych: S = 20 L=3 Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 1 PETLA: 2 3 4 ET: 5 6 7 8 9 10 11 12 KONIEC: POB N ODE ST1 SOM KONIEC ŁAD L POB 19 DOD S ŁAD S POB ET DOD ST1 ŁAD ET POB L SOB PETLA STP dr inż. Alina MOMOT 13 ST1: 14 S: 15 N: 16 TAB: 17 18 19 20 21 L: RST 1 RST 0 RST 5 RST 7 RST 13 RST 21 RST 19 RST 3 RPA KON Podgląd zmiennych: S = 41 L=2 Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 1 PETLA: 2 3 4 ET: 5 6 7 8 9 10 11 12 KONIEC: POB N ODE ST1 SOM KONIEC ŁAD L POB 20 DOD S ŁAD S POB ET DOD ST1 ŁAD ET POB L SOB PETLA STP dr inż. Alina MOMOT 13 ST1: 14 S: 15 N: 16 TAB: 17 18 19 20 21 L: RST 1 RST 0 RST 5 RST 7 RST 13 RST 21 RST 19 RST 3 RPA KON Podgląd zmiennych: S = 60 L=1 Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 1 PETLA: 2 3 4 ET: 5 6 7 8 9 10 11 12 KONIEC: POB N ODE ST1 SOM KONIEC ŁAD L POB 21 DOD S ŁAD S POB ET DOD ST1 ŁAD ET POB L SOB PETLA STP dr inż. Alina MOMOT 13 ST1: 14 S: 15 N: 16 TAB: 17 18 19 20 21 L: RST 1 RST 0 RST 5 RST 7 RST 13 RST 21 RST 19 RST 3 RPA KON Podgląd zmiennych: S = 63 L=0 Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Makroasembler - założenia Makroasembler umożliwia tworzenie własnych instrukcji przez programistę Makroinstrukcje zastępując powtarzające się fragmenty kodu jedną nazwą zwiększają czytelność programu Składnia makroinstrukcji: MAKRO <nazwa> <lista parametrów fromalnych> [ NAZWA LOKALNA <lista nazw lokalnych> ] <rozkazy tworzące makroinstrukcję> KONM dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Przykład zastosowania makroinstrukcji ... ... ... ... POB A DOD ST1 ŁAD A ... POB B DOD ST1 ŁAD B MAKRO INC P POB P DOD ST1 ŁAD P KONM ... ⇒ INC A ... ⇒ INC B dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Przykład programu z makroinstrukcją Zadanie: Policzyć sumę wartości bezwzględnych dwóch komórek pamięci X i Y, a wynik zapisać w komórce pamięci Z. Makroinstrukcja MAKRO ABS Liczba NAZWA LOKALNA Ujemna, Koniec POB Liczba SOM Ujemna SOB Koniec Ujemna: ODE Liczba ODE Liczba Koniec: KONM dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Przykład programu z makroinstrukcją Zadanie: Policzyć sumę wartości bezwzględnych dwóch komórek pamięci X i Y, a wynik zapisać w komórce pamięci Z. Makroinstrukcja MAKRO ABS Liczba NAZWA LOKALNA Ujemna, Koniec POB Liczba SOM Ujemna SOB Koniec Ujemna: ODE Liczba ODE Liczba Koniec: KONM dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Realizacja programu z makroinstrukcją Program ABS X ŁAD Z ABS Y DOD Z ŁAD Z STP X: RST -2 Y: RST 3 Z: RPA KON Rozwinięcie programu w PaO POB X SOM Ujemna1 SOB Koniec1 Ujemna1: ODE X ODE X Koniec1: ŁAD Z POB Y SOM Ujemna2 SOB Koniec2 Ujemna2: ODE Y ODE Y Koniec2: DOD Z ŁAD Z STP ··· dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Realizacja programu z makroinstrukcją Program ABS X ŁAD Z ABS Y DOD Z ŁAD Z STP X: RST -2 Y: RST 3 Z: RPA KON Rozwinięcie programu w PaO POB X SOM Ujemna1 SOB Koniec1 Ujemna1: ODE X ODE X Koniec1: ŁAD Z POB Y SOM Ujemna2 SOB Koniec2 Ujemna2: ODE Y ODE Y Koniec2: DOD Z ŁAD Z STP ··· dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Realizacja programu z makroinstrukcją Program ABS X ŁAD Z ABS Y DOD Z ŁAD Z STP X: RST -2 Y: RST 3 Z: RPA KON Rozwinięcie programu w PaO POB X SOM Ujemna1 SOB Koniec1 Ujemna1: ODE X ODE X Koniec1: ŁAD Z POB Y SOM Ujemna2 SOB Koniec2 Ujemna2: ODE Y ODE Y Koniec2: DOD Z ŁAD Z STP ··· dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Podprogram - założenia Podprogramy pozwalają na modularne pisanie programów wymagają specjalnych rozkazów Przekazywanie parametrów między programem a podprogramem dokonuje się poprzez: rejestry procesora wskazany obszar pamięci (zawartość rejestru) stos dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Dodatkowe rozkazy Skok do podprogramu SDP Ad (WS)–1 → WS, (L) → (WS), (Ad) → L, A Powrót z podprogramu PWR ((WS)) → L, A, (WS) + 1 → WS Zapis zawartości akumulatora na stos DNS (WS)–1 → WS, (Ak) → (WS) Odczyt zawartości ze stosu do akumulatora PZS ((WS)) → Ak, (WS) + 1 → WS dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Przykład użycia podprogramu Zadanie: Policzyć sumę wartości bezwzględnych dwóch komórek pamięci X i Y, a wynik zapisać w komórce pamięci Z. Rozwiązanie1 - przekazywanie parametrów przez Akumulator: X: Y: Z: POB X SDP Abs ŁAD Z POB Y SDP Abs DOD Z ŁAD Z STP RST -2 RST 3 RPA Abs: Ujemna: TMP: dr inż. Alina MOMOT SOM Ujemna PWR ŁAD TMP ODE TMP ODE TMP PWR RPA KON Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Przykład użycia podprogramu Rozwiązanie2 - przekazywanie parametru do podprogramu przez stos: X: Y: Z: Abs: POB X DNS SDP Abs ŁAD Z POB Y DNS SDP Abs DOD Z ŁAD Z STP RST -2 RST 3 RPA Powrot: Ujemna: TMP: ADRES: dr inż. Alina MOMOT PZS ŁAD ADRES PZS ŁAD TMP SOM Ujemna POB ADRES DNS POB TMP PWR ODE TMP ODE TMP ŁAD TMP SOB Powrot RPA RPA KON Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Makrodefinicje i podprogramy - podsumowanie Użycie makrodefinicji lub podprogramów: zwiększa czytelność programu, usprawnia proces programowania, ułatwia pielęgnację kodu, pozwala na modularne pisanie programów, umożliwia wykorzystanie tego samego kodu w wielu programach. Użycie makroinstrukcji każdorazowo wstawia zdefiniowaną zawartość, symbole lokalne są dostępne tylko wewnątrz makrodefinicji, w programie końcowym tworzone są dla nich unikalne nazwy. Użycie podprogramów zwykle skraca kod ale wydłuża czas jego realizacji. dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja Segmentacja - założenia Segmentacja Podział programu na oddzielne moduły (segmenty) o określonych zadaniach funkcjonalnych tak, aby umożliwić pracę grupową. Każdy moduł jest tworzony i tłumaczony (kompilowany) oddzielnie. Definiuje się więc: punkty wejścia - etykiety, do których będą odwołania z innych segmentów, nazwy zewnętrzne - adresy symboliczne, których etykiety (deklaracje) występują w innym segmencie. Do utworzenia kodu końcowego konieczny jest program łączący (linker). dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja Przykład zastosowania segmentacji Segment 1 WNZ: ET ... SOB ET ... Segment 2 WPW: WNZ: ET: Segment 3 ET P WPW: ... DOD P ŁAD TMP ... WPW - wykaz punktów wejścia WNZ - wykaz nazw zewnętrznych dr inż. Alina MOMOT Języki programowania c.d. P: P ... RST 2 ... Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja Program wielosegmentowy Sumę wartości bezwzględnych X i Y zapisać w komórce Z. Główny.asm WNZ Abs POB X SDP Abs ŁAD Z POB Y SDP Abs DOD Z ŁAD Z STP X: RST -2 Y: RST 3 Z: RPA dr inż. Alina MOMOT Funkcje.asm WPW Abs Abs: SOM Ujemna PWR Ujemna: ŁAD TMP ODE TMP ODE TMP PWR TMP: RPA Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja Program wielosegmentowy - asemblacja Główny.asm → Główny.obj Nazwy zewnętrzne są wypełniane zerami, ale jest dołączona informacja, gdzie wstawić brakujące adresy. Funkcje.asm → Funkcje.obj Dołączona jest informacja o punktach wejścia i ich adresach względnych. dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja Program wielosegmentowy - asemblacja Główny.obj WNZ: Abs 1 4 0: POB 8 1: SDP 0 2: ŁAD 10 3: POB 9 4: SDP 0 5: DOD 10 6: ŁAD 10 7: STP 8: RST -2 9: RST 3 10: RPA dr inż. Alina MOMOT Funkcje.obj WPW: Abs 0 0: SOM 2 1: PWR 2: ŁAD 6 3: ODE 6 4: ODE 6 5: PWR 6: RPA Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja Program wielosegmentowy - konsolidacja Główny.obj, Funkcje.obj → Główny.exe Uzupełnia się brakujące adresy, moduły są relokowane w pamięci dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja Program wielosegmentowy - konsolidacja Główny.obj WNZ: Abs 1 4 0: POB 8 1: SDP 0 2: ŁAD 10 3: POB 9 4: SDP 0 5: DOD 10 6: ŁAD 10 7: STP 8: RST -2 9: RST 3 10: RPA Funkcje.obj WPW: Abs 0 0: SOM 2 1: PWR 2: ŁAD 6 3: ODE 6 4: ODE 6 5: PWR 6: RPA Program zostaje dołączony od komórki 11, więc wszystkie adresy są przesunięte o 11. dr inż. Alina MOMOT Języki programowania c.d. Główny.exe 0: POB 8 1: SDP 11 2: ŁAD 10 3: POB 9 4: SDP 11 5: DOD 10 6: ŁAD 10 7: STP 8: RST -2 9: RST 3 10: RPA 11: SOM 13 12: PWR 13: ŁAD 17 14: ODE 17 15: ODE 17 16: PWR 17: RPA Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Języki wyższego rzędu - translacja Translacja to tłumaczenie z jednego języka na inny. Translator - program tłumaczący kod programu na kod asemblera lub kod maszynowy. Typy translatorów: interpreter - translator programu powodujący natychmiastowe wykonanie każdej przetłumaczonej sekwencji rozkazów, kompilator - translator przeznaczony do przekształcania programów źródłowych w program wynikowy, zakłada się tu istnienie dwóch procesów: kompilacji i wykonania. dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Interpreter vs Kompilator Zalety: – łatwo się uruchamia – wygodny do usuwania błędów – raz przetłumaczony program może być wielokrotnie wykonywany (na różnych danych, czasami różnych platformach) Wady: – dłuższy czas wykonywania (wiele instrukcji tłumaczonych jest powtórnie) – trudniejszy do wykrywania błędów danych (podczas tłumaczenia wykrywa się tylko błędy składniowe) – czasami trudniej się uruchamia dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Etapy kompilacji 1 Analiza programu źródłowego: leksykalna (sprawdzanie symboli), syntaktyczna (sprawdzanie konstrukcji). 2 Synteza kodu wynikowego: generacja kodu, optymalizacja kodu, gospodarka pamięcią. dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Algorytm translacji wyrażenia arytmetycznego - założenia Instrukcja podstawienia jest poprawna Wyrażenie arytmetyczne zapisane jest w notacji nawiasowej Znana jest Tablica priorytetów: operator ˆ ∗, / +, − priorytet 1 2 3 nazwa symboliczna POT MNO, DZI DOD, ODE Wykorzystywany jest stos i zmienne pomocnicze: i – wskaźnik szczytu stosu Si – zawartość i-tej komórki stosu j – numer zmiennej pomocniczej Tj – adres symboliczny zmiennej pomocniczej dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Algorytm translacji wyrażenia arytmetycznego dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 i = −1 j =1 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 X i =0 j =1 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 = X i =1 j =1 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 ( = X i =2 j =1 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 A ( = X i =3 j =1 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 − A ( = X i =4 j =1 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 − A ( = X i =5 j =1 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 POB A ODE B ŁAD T1 B − A ( = X i =5 j =1 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 POB A ODE B ŁAD T1 T1 ( = X i =3 j =2 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 POB A ODE B ŁAD T1 + T1 ( = X i =4 j =2 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 POB A ODE B ŁAD T1 C + T1 ( = X i =5 j =2 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 C + T1 ( = X i =5 j =2 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 T2 ( = X i =3 j =3 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 T2 = X i =2 j =3 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 ∗ T2 = X i =3 j =3 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 ( ∗ T2 = X i =4 j =3 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 A ( ∗ T2 = X i =5 j =3 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 − A ( ∗ T2 = X i =6 j =3 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 B − A ( ∗ T2 = X i =7 j =3 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 B − A ( ∗ T2 = X i =7 j =3 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 T3 ( ∗ T2 = X i =5 j =4 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 T3 ∗ T2 = X i =4 j =4 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 T3 ∗ T2 = X i =4 j =4 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD T4 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 T4 = X i =2 j =5 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD T4 Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład ↓ X=(A−B+C)∗(A−B) 7 6 5 4 3 2 1 0 T4 = X i =2 j =5 dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD T4 POB T4 ŁAD X Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Optymalizacja kodu Optymalizacja kodu przebiega w 3 etapach: 1 Eliminacja sekwencji ŁAD Tj POB Tj 2 Wykorzystanie przemienności operacji, czyli ŁAD Tj zamiana POB X na <op.przem.> X <op.przem.> Tj Wykorzystanie wspólnych podwyrażeń - wynik zapisany w zmiennej pomocniczej używany jest w dalszej części kodu 3 dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład optymalizacji kodu X=(A-B+C)*(A-B) POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD T4 POB T4 ŁAD X dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład optymalizacji kodu X=(A-B+C)*(A-B) POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD T4 POB T4 ŁAD X 1. etap POB A ODE B DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD X dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład optymalizacji kodu X=(A-B+C)*(A-B) POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD T4 POB T4 ŁAD X 1. etap 2. etap POB A ODE B DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD X POB A ODE B DOD C ŁAD T2 POB A ODE B MNO T2 ŁAD X dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład optymalizacji kodu X=(A-B+C)*(A-B) POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD T4 POB T4 ŁAD X 1. etap 2. etap 3. etap POB A ODE B DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD X POB A ODE B DOD C ŁAD T2 POB A ODE B MNO T2 ŁAD X POB A ODE B ŁAD T1 DOD C ŁAD T2 POB T1 MNO T2 ŁAD X dr inż. Alina MOMOT Języki programowania c.d. Plan wykładu Asembler maszyny W Rozszerzenia asemblera maszyny W Segmentacja Języki wyższego rzędu - translacja Wprowadzenie Algorytm translacji wyrażenia arytmetycznego Optymalizacja kodu Przykład optymalizacji kodu X=(A-B+C)*(A-B) POB A ODE B ŁAD T1 POB T1 DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD T4 POB T4 ŁAD X 1. etap 2. etap 3. etap POB A ODE B DOD C ŁAD T2 POB A ODE B ŁAD T3 POB T2 MNO T3 ŁAD X POB A ODE B DOD C ŁAD T2 POB A ODE B MNO T2 ŁAD X POB A ODE B ŁAD T1 DOD C ŁAD T2 POB T1 MNO T2 ŁAD X dr inż. Alina MOMOT Języki programowania c.d. POB A ODE B ŁAD T1 DOD C MNO T1 ŁAD X