Podstawy Informatyki Języki programowania c.d.

Podobne dokumenty
Podstawy Informatyki Języki programowania

Podstawy programowania

Podstawy Informatyki Układ przerwań

Metody Kompilacji Wykład 1 Wstęp

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Translacja wprowadzenie

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Podstawy Informatyki Układ sterujący

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Programowanie komputerów

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Wstępdo assemblera MA51

Mikrokontroler ATmega32. Język symboliczny

Zarządzanie pamięcią operacyjną

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Java EE produkcja oprogramowania

Zadanie analizy leksykalnej

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

Język programowania: Lista instrukcji (IL Instruction List)

Programowanie niskopoziomowe

Języki programowania zasady ich tworzenia

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

KONSTRUKCJA KOMPILATORÓW

Podstawy programowania - 1

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Programowanie Niskopoziomowe

Podstawy Programowania C++

Podstawy programowania skrót z wykładów:

TRANSLACJA I TRANSLATORY

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Wstęp do programowania. Wykład 1

Programowanie w języku C++ Grażyna Koba

KARTA KURSU. Wstęp do programowania

Programowanie w języku Python. Grażyna Koba

Programowanie Niskopoziomowe

elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Języki i metodyka programowania

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C2. Low Level Programming Informatyka

Gramatyki atrybutywne

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C1

Organizacja typowego mikroprocesora

Ryszard Myhan. Wykład 1: Języki programowania

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

PLC1: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs podstawowy

Rok akademicki: 2013/2014 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Algorytmy od problemu do wyniku

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Plan wykładu. Kompilatory. Literatura. Translatory. Literatura Translatory. Paweł J. Matuszyk

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Podstawy programowania (1)

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Wstęp do programowania

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Algorytm. a programowanie -

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Architektura komputerów

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Techniki mikroprocesorowe i systemy wbudowane

Algorytmika i pseudoprogramowanie

Makropolecenia w Excelu

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*

Zarządzanie pamięcią operacyjną

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

imei Instytut Metrologii, Elektroniki i Informatyki

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Od programu źródłowego do procesu

Analiza semantyczna. Gramatyka atrybutywna

dr inż. Jarosław Forenc

Delphi Laboratorium 3

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Podstawy programowania.

PMiK Programowanie Mikrokontrolera 8051

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

WYKŁAD 1 - KONSPEKT. Program wykładu:

Struktura i działanie jednostki centralnej

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Transkrypt:

Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi

Plan wykładu 1 Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy 2 Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 3 Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja 4

Założenia Plan wykładu Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy 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

Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład programu samomodyfikującego się Tekst źródłowy programu ET: SOM KONIEC POB ET DOD ST1 ŁAD ET SOB ET KONIEC: STP ST1: RST 1 A: RST 5 RST 67 RST -1 KON

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 SOM KONIEC 2 POB ET 3 DOD ST1 4 ŁAD ET 5 SOB ET 6 KONIEC: STP 7 ST1: RST 1 8 A: RST 5 9 RST 67 10 RST -1 KON Tablica T1 Rozkaz Kod DOD 001 ODE 010 ŁAD 011 POB 100 SOB 101 SOM 110 STP 111

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 SOM KONIEC 2 POB ET 3 DOD ST1 4 ŁAD ET 5 SOB ET 6 KONIEC: STP 7 ST1: RST 1 8 A: RST 5 9 RST 67 10 RST -1 KON Tablica T1 Rozkaz Kod DOD 001 ODE 010 ŁAD 011 POB 100 SOB 101 SOM 110 STP 111 Tablica T2 Etykieta Adres ET 00000 KONIEC 00110 ST1 00111 A 01000

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 SOM KONIEC 2 POB ET 3 DOD ST1 4 ŁAD ET 5 SOB ET 6 KONIEC: STP 7 ST1: RST 1 8 A: RST 5 9 RST 67 10 RST -1 KON Kod maszynowy 100 01000 110 00110 100 00000 001 00111 011 00000 101 00000 111 00000 000 00001 000 00101 010 00011 111 11111 Tablica T1 Rozkaz Kod DOD 001 ODE 010 ŁAD 011 POB 100 SOB 101 SOM 110 STP 111 Tablica T2 Etykieta Adres ET 00000 KONIEC 00110 ST1 00111 A 01000

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 SOM KONIEC 2 POB ET 3 DOD ST1 4 ŁAD ET 5 SOB ET 6 KONIEC: STP 7 ST1: RST 1 8 A: RST 5 9 RST 67 10 RST -1 KON Kod maszynowy 100 01001 110 00110 100 00000 001 00111 011 00000 101 00000 111 00000 000 00001 000 00101 010 00011 111 11111 Tablica T1 Rozkaz Kod DOD 001 ODE 010 ŁAD 011 POB 100 SOB 101 SOM 110 STP 111 Tablica T2 Etykieta Adres ET 00000 KONIEC 00110 ST1 00111 A 01000

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 SOM KONIEC 2 POB ET 3 DOD ST1 4 ŁAD ET 5 SOB ET 6 KONIEC: STP 7 ST1: RST 1 8 A: RST 5 9 RST 67 10 RST -1 KON Kod maszynowy 100 01010 110 00110 100 00000 001 00111 011 00000 101 00000 111 00000 000 00001 000 00101 010 00011 111 11111 Tablica T1 Rozkaz Kod DOD 001 ODE 010 ŁAD 011 POB 100 SOB 101 SOM 110 STP 111 Tablica T2 Etykieta Adres ET 00000 KONIEC 00110 ST1 00111 A 01000

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 ST1: RST 1 S: RST 0 N: RST 5 TAB: RST 7 RST 13 RST 21 RST 19 RST 3 L: RPA KON

Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 POB N 1 PETLA: ODE ST1 2 SOM KONIEC 3 ŁAD L 4 ET: POB 16 5 DOD S 6 ŁAD S 7 POB ET 8 DOD ST1 9 ŁAD ET 10 POB L 11 SOB PETLA 12 KONIEC: STP 13 ST1: RST 1 14 S: RST 0 15 N: RST 5 16 TAB: RST 7 17 RST 13 18 RST 21 19 RST 19 20 RST 3 21 L: RPA KON Podgląd zmiennych: S = 0 L =?

Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 POB N 1 PETLA: ODE ST1 2 SOM KONIEC 3 ŁAD L 4 ET: POB 17 5 DOD S 6 ŁAD S 7 POB ET 8 DOD ST1 9 ŁAD ET 10 POB L 11 SOB PETLA 12 KONIEC: STP 13 ST1: RST 1 14 S: RST 0 15 N: RST 5 16 TAB: RST 7 17 RST 13 18 RST 21 19 RST 19 20 RST 3 21 L: RPA KON Podgląd zmiennych: S = 7 L = 4

Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 POB N 1 PETLA: ODE ST1 2 SOM KONIEC 3 ŁAD L 4 ET: POB 18 5 DOD S 6 ŁAD S 7 POB ET 8 DOD ST1 9 ŁAD ET 10 POB L 11 SOB PETLA 12 KONIEC: STP 13 ST1: RST 1 14 S: RST 0 15 N: RST 5 16 TAB: RST 7 17 RST 13 18 RST 21 19 RST 19 20 RST 3 21 L: RPA KON Podgląd zmiennych: S = 20 L = 3

Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 POB N 1 PETLA: ODE ST1 2 SOM KONIEC 3 ŁAD L 4 ET: POB 19 5 DOD S 6 ŁAD S 7 POB ET 8 DOD ST1 9 ŁAD ET 10 POB L 11 SOB PETLA 12 KONIEC: STP 13 ST1: RST 1 14 S: RST 0 15 N: RST 5 16 TAB: RST 7 17 RST 13 18 RST 21 19 RST 19 20 RST 3 21 L: RPA KON Podgląd zmiennych: S = 41 L = 2

Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 POB N 1 PETLA: ODE ST1 2 SOM KONIEC 3 ŁAD L 4 ET: POB 20 5 DOD S 6 ŁAD S 7 POB ET 8 DOD ST1 9 ŁAD ET 10 POB L 11 SOB PETLA 12 KONIEC: STP 13 ST1: RST 1 14 S: RST 0 15 N: RST 5 16 TAB: RST 7 17 RST 13 18 RST 21 19 RST 19 20 RST 3 21 L: RPA KON Podgląd zmiennych: S = 60 L = 1

Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy Przykład - sumowanie elementów tablicy 0 POB N 1 PETLA: ODE ST1 2 SOM KONIEC 3 ŁAD L 4 ET: POB 21 5 DOD S 6 ŁAD S 7 POB ET 8 DOD ST1 9 ŁAD ET 10 POB L 11 SOB PETLA 12 KONIEC: STP 13 ST1: RST 1 14 S: RST 0 15 N: RST 5 16 TAB: RST 7 17 RST 13 18 RST 21 19 RST 19 20 RST 3 21 L: RPA KON Podgląd zmiennych: S = 63 L = 0

Makroasembler - założenia Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 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

Przykład zastosowania makroinstrukcji Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie MAKRO INC P POB P... DOD ST1... ŁAD P... KONM...... DOD ST1 INC A ŁAD A...... POB B DOD ST1 INC B ŁAD B

Przykład programu z makroinstrukcją Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 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: Koniec: KONM ODE Liczba ODE Liczba

Przykład programu z makroinstrukcją Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 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: Koniec: KONM ODE Liczba ODE Liczba

Realizacja programu z makroinstrukcją Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 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

Realizacja programu z makroinstrukcją Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 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

Realizacja programu z makroinstrukcją Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 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

Podprogram - założenia Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 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

Dodatkowe rozkazy Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 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

Przykład użycia podprogramu Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie 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: POB X SDP Abs ŁAD Z POB Y SDP Abs DOD Z ŁAD Z STP X: RST -2 Y: RST 3 Z: RPA Abs: Ujemna: TMP: SOM Ujemna PWR ŁAD TMP ODE TMP ODE TMP PWR RPA KON

Przykład użycia podprogramu Makroasembler - założenia Przykład programu z makroinstrukcją Podprogramy - założenia Przykład użycia podprogramu Makrodefinicje i podprogramy - podsumowanie Rozwiązanie2 - przekazywanie parametru do podprogramu przez stos: POB X DNS SDP Abs ŁAD Z POB Y Abs: PZS ŁAD ADRES PZS ŁAD TMP SOM Ujemna DNS SDP Abs DOD Z ŁAD Z Powrot: DRES DNS POB TMP PWR STP Ujemna: ODE TMP X: RST -2 ODE TMP Y: RST 3 ŁAD TMP Z: RPA SOB Powrot TMP: RPA ADRES: RPA KON

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.

- założenia Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja 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).

Przykład zastosowania segmentacji Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja Segment 1 WNZ: ET... SOB ET... Segment 2 WPW: WNZ: ET: ET P... DOD P ŁAD TMP... Segment 3 WPW: P... P: RST 2... WPW - wykaz punktów wejścia WNZ - wykaz nazw zewnętrznych

Program wielosegmentowy Program wielosegmentowy - przykład Program wielosegmentowy - asemblacja Program wielosegmentowy - konsolidacja 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 Funkcje.asm WPW Abs Abs: SOM Ujemna PWR Ujemna: ŁAD TMP ODE TMP ODE TMP PWR TMP: RPA

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.

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 Funkcje.obj WPW: Abs 0 0: SOM 2 1: PWR 2: ŁAD 6 3: ODE 6 4: ODE 6 5: PWR 6: RPA

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

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. 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

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.

Interpreter vs Kompilator Zalety: łatwo się uruchamia wygodny do usuwania błędów Wady: dłuższy czas wykonywania (wiele instrukcji tłumaczonych jest powtórnie) raz przetłumaczony program może być wielokrotnie wykonywany (na różnych danych, czasami różnych platformach) trudniejszy do wykrywania błędów danych (podczas tłumaczenia wykrywa się tylko błędy składniowe) czasami trudniej się uruchamia

Etapy kompilacji Plan wykładu 1 Analiza programu źródłowego: leksykalna (sprawdzanie symboli), syntaktyczna (sprawdzanie konstrukcji). 2 Synteza kodu wynikowego: generacja kodu, optymalizacja kodu, gospodarka pamięcią.

- założenia Instrukcja podstawienia jest poprawna Wyrażenie arytmetyczne zapisane jest w notacji nawiasowej Znana jest Tablica priorytetów: operator priorytet nazwa symboliczna ˆ 1 POT, / 2 MNO, DZI +, 3 DOD, ODE Wykorzystywany jest stos i zmienne pomocnicze: i wskaźnik szczytu stosu S i zawartość i-tej komórki stosu j numer zmiennej pomocniczej T j adres symboliczny zmiennej pomocniczej

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 2 1 0 i = 1 j = 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 2 1 0 X i = 0 j = 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 2 1 = 0 X i = 1 j = 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 2 ( 1 = 0 X i = 2 j = 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 A 2 ( 1 = 0 X i = 3 j = 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 A 2 ( 1 = 0 X i = 4 j = 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 A 2 ( 1 = 0 X i = 5 j = 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 B 4 3 A 2 ( 1 = 0 X i = 5 j = 1 ŁAD T 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 T 1 2 ( 1 = 0 X i = 3 j = 2 ŁAD T 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 + 3 T 1 2 ( 1 = 0 X i = 4 j = 2 ŁAD T 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 C 4 + 3 T 1 2 ( 1 = 0 X i = 5 j = 2 ŁAD T 1

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 C 4 + 3 T 1 2 ( 1 = 0 X i = 5 j = 2 ŁAD T 1 POB T 1 DOD C ŁAD T 2

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 T 2 2 ( 1 = 0 X i = 3 j = 3 ŁAD T 1 POB T 1 DOD C ŁAD T 2

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 2 T 2 1 = 0 X i = 2 j = 3 ŁAD T 1 POB T 1 DOD C ŁAD T 2

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 2 T 2 1 = 0 X i = 3 j = 3 ŁAD T 1 POB T 1 DOD C ŁAD T 2

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 ( 3 2 T 2 1 = 0 X i = 4 j = 3 ŁAD T 1 POB T 1 DOD C ŁAD T 2

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 A 4 ( 3 2 T 2 1 = 0 X i = 5 j = 3 ŁAD T 1 POB T 1 DOD C ŁAD T 2

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 A 4 ( 3 2 T 2 1 = 0 X i = 6 j = 3 ŁAD T 1 POB T 1 DOD C ŁAD T 2

Przykład Plan wykładu X=(A B+C) (A B) 7 B 6 5 A 4 ( 3 2 T 2 1 = 0 X i = 7 j = 3 ŁAD T 1 POB T 1 DOD C ŁAD T 2

Przykład Plan wykładu X=(A B+C) (A B) 7 B 6 5 A 4 ( 3 2 T 2 1 = 0 X i = 7 j = 3 ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 T 3 4 ( 3 2 T 2 1 = 0 X i = 5 j = 4 ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 T 3 3 2 T 2 1 = 0 X i = 4 j = 4 ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 T 3 3 2 T 2 1 = 0 X i = 4 j = 4 ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD T 4

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 2 T 4 1 = 0 X i = 2 j = 5 ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD T 4

Przykład Plan wykładu X=(A B+C) (A B) 7 6 5 4 3 2 T 4 1 = 0 X i = 2 j = 5 ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD T 4 POB T 4 ŁAD X

przebiega w 3 etapach: 1 Eliminacja sekwencji ŁAD T j POB T j 2 Wykorzystanie przemienności operacji, czyli ŁAD T j zamiana POB X na <op.przem.> X <op.przem.> T j 3 Wykorzystanie wspólnych podwyrażeń - wynik zapisany w zmiennej pomocniczej używany jest w dalszej części kodu

Przykład optymalizacji kodu X = ( A - B + C ) * ( A - B ) ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD T 4 POB T 4 ŁAD X

Przykład optymalizacji kodu X = ( A - B + C ) * ( A - B ) ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD T 4 POB T 4 ŁAD X 1. etap DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD X

Przykład optymalizacji kodu X = ( A - B + C ) * ( A - B ) ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD T 4 POB T 4 ŁAD X 1. etap DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD X 2. etap DOD C ŁAD T 2 MNO T 2 ŁAD X

Przykład optymalizacji kodu X = ( A - B + C ) * ( A - B ) ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD T 4 POB T 4 ŁAD X 1. etap DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD X 2. etap DOD C ŁAD T 2 MNO T 2 ŁAD X 3. etap ŁAD T 1 DOD C ŁAD T 2 POB T 1 MNO T 2 ŁAD X

Przykład optymalizacji kodu X = ( A - B + C ) * ( A - B ) ŁAD T 1 POB T 1 DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD T 4 POB T 4 ŁAD X 1. etap DOD C ŁAD T 2 ŁAD T 3 POB T 2 MNO T 3 ŁAD X 2. etap DOD C ŁAD T 2 MNO T 2 ŁAD X 3. etap ŁAD T 1 DOD C ŁAD T 2 POB T 1 MNO T 2 ŁAD X ŁAD T 1 DOD C MNO T 1 ŁAD X