Podstawy Informatyki Jezyki programowania
Transkrypt
Podstawy Informatyki Jezyki programowania
Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Podstawy Informatyki Języki programowania dr inż. Alina MOMOT [email protected] http://zti.polsl.pl/AMomot/pi dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Plan wykładu Programowanie Wprowadzenie Języki programowania 2 Kod maszynowy dla maszyny W Założenia Przykład Wczytywanie programu do pamięci Podsumowanie 3 Asembler maszyny W Założenia Przykład 1 Przykład 2 4 Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji 1 dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Wprowadzenie Języki programowania Wprowadzenie Joseph Marie Jacquard (1752 – 1834) – francuski tkacz i wynalazca. W 1805 roku zaprojektował krosno tkackie wykorzystujące karty dziurkowane, na których zapisywany był wzór tkaniny do wytworzenia. dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Wprowadzenie Języki programowania Karty dziurkowane W 1887r. Herman Hollerith (1860–1929) opatentował własny format karty dziurkowanej użytej podczas spisu ludności USA w 1890 roku. W 1924 r. został prezesem IBM, która wprowadziła najpopularniejszy standard karty: 80 kolumn z pojedynczym znakiem i prostokątne otwory. dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Wprowadzenie Języki programowania Programowanie Programowanie Zapis algorytmu tak, aby był on zrozumiały dla komputera Języki programowania można dzielić na: zorientowane maszynowo kod maszynowy, rozkazy i adresy argumentów podawane są binarnie języki asemblera, rozkazy i adresy argumentów podawane są w postaci symbolicznej zorientowane problemowo instrukcje symboliczne często są złożone z wielu rozkazów maszynowych dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Wprowadzenie Języki programowania Wybrane języki programowania wysokiego poziomu FORTRAN (FORmula TRANslator), 1955, John Code LISP (LISt Processor), 1958, John McCarthy COBOL (COmmon Business Oriented Language), 1959, Grace Hopper (Short Range Committee) ALGOL (ALGOrithmic Language) w wersji 58,60 i 68 BASIC (Beginner’s All-purpose Symbolic Instruction Code), 1964, John G. Kemeny, Thomas E. Kurtz Pascal 1970, Niklaus Wirth C 1972, Dennis Ritchie C++ 1980, Bjarne Stroustrup Java 1995, James Gosling (Sun Microsystems) PHP 1995, Rasmus Lerdorf C# 2000, Microsoft dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Założenia Program składa się z ciągu rozkazów oraz danych Format rozkazu: 3-bity Kodu rozkazu, 5-bity Adresu argumentu Realizacja programu rozpoczyna się od rozkazu zapisanego w komórce pamięci o adresie 0 Ustalona jest lista rozkazów Kod 001 010 011 100 101 110 111 Treść (Ak) + ((Ad)) → Ak (Ak) − ((Ad)) → Ak (Ak) → (Ad) ((Ad)) → Ak (Ad) → L (Ad) → L gdy Z = 1 zatrzymanie zegara dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Przykład Zadanie: Dodać do siebie zawartość dwóch kolejnych komórek pamięci (4 i 5), sumę zapisać do komórki następnej (6). Rozwiązanie: Kod 001 010 011 100 101 110 111 Treść (Ak) + ((Ad)) → Ak (Ak) − ((Ad)) → Ak (Ak) → (Ad) ((Ad)) → Ak (Ad) → L (Ad) → L gdy Z = 1 zatrzymanie zegara dr inż. Alina MOMOT (4) → Ak (Ak) + (5) → Ak (Ak) → 6 stop pierwszy argument drugi argument wynik Układ sterujący 100 001 011 111 000 000 000 0100 0101 0110 0000 0011 0101 0000 Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Przykład Zadanie: Dodać do siebie zawartość dwóch kolejnych komórek pamięci (4 i 5), sumę zapisać do komórki następnej (6). Rozwiązanie: Kod 001 010 011 100 101 110 111 Treść (Ak) + ((Ad)) → Ak (Ak) − ((Ad)) → Ak (Ak) → (Ad) ((Ad)) → Ak (Ad) → L (Ad) → L gdy Z = 1 zatrzymanie zegara dr inż. Alina MOMOT (4) → Ak (Ak) + (5) → Ak (Ak) → 6 stop pierwszy argument drugi argument wynik Układ sterujący 100 001 011 111 000 000 000 0100 0101 0110 0000 0011 0101 0000 Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Przykład Zadanie: Dodać do siebie zawartość dwóch kolejnych komórek pamięci (4 i 5), sumę zapisać do komórki następnej (6). Rozwiązanie: Kod 001 010 011 100 101 110 111 Treść (Ak) + ((Ad)) → Ak (Ak) − ((Ad)) → Ak (Ak) → (Ad) ((Ad)) → Ak (Ad) → L (Ad) → L gdy Z = 1 zatrzymanie zegara dr inż. Alina MOMOT (4) → Ak (Ak) + (5) → Ak (Ak) → 6 stop pierwszy argument drugi argument wynik Układ sterujący 100 001 011 111 000 000 000 0100 0101 0110 0000 0011 0101 0000 Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Bootstrap Program pobiera dane z taśmy perforowanej Wymaga jednej komórki pamięci, gdzie przechowywana jest informacja o aktualnym adresie odczytywanego rozkazu z czytnika Koniec programu na taśmie sygnalizuje brak dziurek, czyli 0 Algorytm działania Bootstrap 1 Czytaj rząd taśmy do Ak 2 Jeśli (Ak) = 0, to KONIEC 3 (Ak) → (KP) 4 (KP) + 1 → (KP), skocz do 1. dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Bootstrap Program pobiera dane z taśmy perforowanej Wymaga jednej komórki pamięci, gdzie przechowywana jest informacja o aktualnym adresie odczytywanego rozkazu z czytnika Koniec programu na taśmie sygnalizuje brak dziurek, czyli 0 Algorytm działania Bootstrap 1 Czytaj rząd taśmy do Ak 2 Jeśli (Ak) = 0, to KONIEC 3 (Ak) → (KP) 4 (KP) + 1 → (KP), skocz do 1. dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Loader Potrafi modyfikować program w czasie jego odczytu Posiada zabezpieczenie przed błędami odczytu Każdy rozkaz wraz z adresem argumentu zawiera informację czy adres ten ma być zmodyfikowany względem początku programu Postać bloku danych dla Loadera: 1 Początek bloku 2 Długość bloku 3 Adres pierwszej komórki 4 Treść programu w postaci binarnej 5 Suma kontrolna 6 Koniec bloku dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Loader Potrafi modyfikować program w czasie jego odczytu Posiada zabezpieczenie przed błędami odczytu Każdy rozkaz wraz z adresem argumentu zawiera informację czy adres ten ma być zmodyfikowany względem początku programu Postać bloku danych dla Loadera: 1 Początek bloku 2 Długość bloku 3 Adres pierwszej komórki 4 Treść programu w postaci binarnej 5 Suma kontrolna 6 Koniec bloku dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Podsumowanie Zalety kodu maszynowego: Program nie wymaga tłumaczenia Może być zrealizowany bezpośrednio po wprowadzeniu do pamięci Małe wymagania na pamięć Wady kodu maszynowego: Konieczność operowania na kodach binarnych rozkazów Konieczność wyliczania adresów komórek Bardzo trudna modyfikacja programu Rozwiązanie dedykowane konkretnemu procesorowi dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład Wczytywanie programu do pamięci Podsumowanie Podsumowanie Zalety kodu maszynowego: Program nie wymaga tłumaczenia Może być zrealizowany bezpośrednio po wprowadzeniu do pamięci Małe wymagania na pamięć Wady kodu maszynowego: Konieczność operowania na kodach binarnych rozkazów Konieczność wyliczania adresów komórek Bardzo trudna modyfikacja programu Rozwiązanie dedykowane konkretnemu procesorowi dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład 1 Przykład 2 Założenia Język asemblera ma zastąpić: kody binarne łatwymi do zapamiętania mnemonikami rozkazów adresy absolutne adresami symbolicznymi, czyli etykietami 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 Niedopuszczalne jest wystąpienie w treści programu identycznych nazw etykiet Adres symboliczny argumentu musi mieć odpowiednik w etykiecie dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład 1 Przykład 2 Założenia Język asemblera ma zastąpić: kody binarne łatwymi do zapamiętania mnemonikami rozkazów adresy absolutne adresami symbolicznymi, czyli etykietami 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 Niedopuszczalne jest wystąpienie w treści programu identycznych nazw etykiet Adres symboliczny argumentu musi mieć odpowiednik w etykiecie dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład 1 Przykład 2 Założenia Język asemblera ma zastąpić: kody binarne łatwymi do zapamiętania mnemonikami rozkazów adresy absolutne adresami symbolicznymi, czyli etykietami 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 Niedopuszczalne jest wystąpienie w treści programu identycznych nazw etykiet Adres symboliczny argumentu musi mieć odpowiednik w etykiecie dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład 1 Przykład 2 Przykład 1 Zadanie: Dodać do siebie zawartość dwóch kolejnych komórek pamięci (4 i 5), sumę zapisać do komórki następnej (6). Rozwiązanie: (4) → Ak (Ak) + (5) → Ak (Ak) → 6 stop pierwszy argument drugi argument wynik 100 001 011 111 000 000 000 0100 0101 0110 0000 0011 0101 0000 Arg1: Arg2: S: dr inż. Alina MOMOT POB Arg1 DOD Arg2 ŁAD S STP RST 3 RST 5 RPA KON Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład 1 Przykład 2 Przykład 1 Zadanie: Dodać do siebie zawartość dwóch kolejnych komórek pamięci (4 i 5), sumę zapisać do komórki następnej (6). Rozwiązanie: (4) → Ak (Ak) + (5) → Ak (Ak) → 6 stop pierwszy argument drugi argument wynik 100 001 011 111 000 000 000 0100 0101 0110 0000 0011 0101 0000 Arg1: Arg2: S: dr inż. Alina MOMOT POB Arg1 DOD Arg2 ŁAD S STP RST 3 RST 5 RPA KON Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład 1 Przykład 2 Przykład 1 Zadanie: Dodać do siebie zawartość dwóch kolejnych komórek pamięci (4 i 5), sumę zapisać do komórki następnej (6). Rozwiązanie: (4) → Ak (Ak) + (5) → Ak (Ak) → 6 stop pierwszy argument drugi argument wynik 100 001 011 111 000 000 000 0100 0101 0110 0000 0011 0101 0000 Arg1: Arg2: S: dr inż. Alina MOMOT POB Arg1 DOD Arg2 ŁAD S STP RST 3 RST 5 RPA KON Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład 1 Przykład 2 Przykład 2 Zadanie: Wyznaczyć resztę z dzielenia zawartości komórki pamięci A przez zawartość komórki pamięci B. Wynik zapisać do komórki C. Rozwiązanie: dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład 1 Przykład 2 Przykład 2 Zadanie: Wyznaczyć resztę z dzielenia zawartości komórki pamięci A przez zawartość komórki pamięci B. Wynik zapisać do komórki C. Rozwiązanie: dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Przykład 1 Przykład 2 Przykład 2 Zadanie: Wyznaczyć resztę z dzielenia zawartości komórki pamięci A przez zawartość komórki pamięci B. Wynik zapisać do komórki C. POB A Rozwiązanie: PETLA: ODE B SOM UJEMNA SOB PETLA UJEMNA: DOD B ŁAD C STP A: RST 35 B: RST 7 C: RPA KON dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji Założenia Asembler - program tłumaczący język symboliczny na kod maszynowy Program asemblera realizuje tłumaczenie w dwóch etapach: 1 2 Utworzenie tablicy etykiet i przyporządkowanie im adresów fizycznych Mnemoniki rozkazów i etykiety zostają zastąpione kodami binarnymi Każdy etap (przebieg, przejście) wymaga czytania programu źródłowego od początku do końca Do tłumaczenia potrzebne są dwie tablice: 1 2 Tablica T1 (stała) – zawiera kody binarne odpowiadające mnemonikom rozkazów Tablica T2 (tworzona w pierwszym etapie asemblacji) – zawiera kody binarne odpowiadające adresom fizycznym etykiet dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji Pierwszy przebieg asemblacji - Algorytm dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji Przykład 2 - Utworzenie tablicy T2 0 1 2 3 4 5 6 7 8 9 10 PETLA: UJEMNA: A: B: C: POB A ODE B SOM UJEMNA SOB PETLA DOD B ŁAD C STP RST 35 RST 7 RPA KON dr inż. Alina MOMOT Tablica T2 etykieta PETLA UJEMNA A B C Układ sterujący adres fizyczny 00001 00100 00111 01000 01001 Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji Przykład 2 - Utworzenie tablicy T2 0 1 2 3 4 5 6 7 8 9 10 PETLA: UJEMNA: A: B: C: POB A ODE B SOM UJEMNA SOB PETLA DOD B ŁAD C STP RST 35 RST 7 RPA KON dr inż. Alina MOMOT Tablica T2 etykieta PETLA UJEMNA A B C Układ sterujący adres fizyczny 00001 00100 00111 01000 01001 Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji Drugi przebieg asemblacji - Algorytm dr inż. Alina MOMOT Układ sterujący Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji Przykład 2 - Generacja kodu wynikowego Tekst źródłowy programu PETLA: UJEMNA: A: B: C: Kod maszynowy POB A ODE B SOM UJEMNA SOB PETLA DOD B ŁAD C STP RST 35 RST 7 RPA KON dr inż. Alina MOMOT 100 010 110 101 001 011 111 001 000 000 00111 01000 00100 00001 01000 01001 00000 00011 00111 00000 Układ sterujący Tablica Rozkaz DOD ODE ŁAD POB SOB SOM STP Tablica Etykieta PETLA UJEMNA A B C T1 Kod 001 010 011 100 101 110 111 T2 Adres 00001 00100 00111 01000 01001 Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji Przykład 2 - Generacja kodu wynikowego Tekst źródłowy programu PETLA: UJEMNA: A: B: C: Kod maszynowy POB A ODE B SOM UJEMNA SOB PETLA DOD B ŁAD C STP RST 35 RST 7 RPA KON dr inż. Alina MOMOT 100 010 110 101 001 011 111 001 000 000 00111 01000 00100 00001 01000 01001 00000 00011 00111 00000 Układ sterujący Tablica Rozkaz DOD ODE ŁAD POB SOB SOM STP Tablica Etykieta PETLA UJEMNA A B C T1 Kod 001 010 011 100 101 110 111 T2 Adres 00001 00100 00111 01000 01001 Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji Przykład 2 - Generacja kodu wynikowego Tekst źródłowy programu PETLA: UJEMNA: A: B: C: Kod maszynowy POB A ODE B SOM UJEMNA SOB PETLA DOD B ŁAD C STP RST 35 RST 7 RPA KON dr inż. Alina MOMOT 100 010 110 101 001 011 111 001 000 000 00111 01000 00100 00001 01000 01001 00000 00011 00111 00000 1 1 1 1 1 1 0 0 0 0 informacja dla Loadera Układ sterujący Tablica Rozkaz DOD ODE ŁAD POB SOB SOM STP Tablica Etykieta PETLA UJEMNA A B C T1 Kod 001 010 011 100 101 110 111 T2 Adres 00001 00100 00111 01000 01001 Plan wykładu Programowanie Kod maszynowy dla maszyny W Asembler maszyny W Translacja języka asemblera do kodu maszynowego Założenia Pierwszy przebieg asemblacji Drugi przebieg asemblacji Przykład 2 - Generacja kodu wynikowego Tekst źródłowy programu PETLA: A: B: C: UJEMNA: Kod maszynowy POB A ODE B SOM UJEMNA SOB PETLA RST 35 RST 7 RPA DOD B ŁAD C STP KON dr inż. Alina MOMOT 100 010 110 101 001 000 000 001 011 111 00111 01000 00100 00001 00011 00111 00000 01000 01001 00000 Układ sterujący Tablica Rozkaz DOD ODE ŁAD POB SOB SOM STP Tablica Etykieta PETLA UJEMNA A B C T1 Kod 001 010 011 100 101 110 111 T2 Adres 00001 00100 00111 01000 01001