ARCHITEKTURA SYSTEMÓW MIKROPROCESOROWYCH. dr inż. Małgorzata Langer B9, pok. 310 Instytut Elektroniki

Podobne dokumenty
Architektura komputerów

Architektura komputerów

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Struktura i działanie jednostki centralnej

Architektura typu Single-Cycle

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

Architektura komputerów

Projektowanie. Projektowanie mikroprocesorów

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

Architektura komputerów Wykład 2

Architektura komputerów

Programowanie Niskopoziomowe

Tranzystor JFET i MOSFET zas. działania

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Architektura komputerów

Architektura komputerów. Asembler procesorów rodziny x86

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

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

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

LEKCJA TEMAT: Współczesne procesory.

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Podstawy Informatyki Języki programowania c.d.

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Mikrokontroler ATmega32. Język symboliczny

Magistrala systemowa (System Bus)

Budowa systemów komputerowych

Architektura komputerów

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

Przykładowe pytania DSP 1

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Kurs Zaawansowany S7. Spis treści. Dzień 1

Logiczny model komputera i działanie procesora. Część 1.

Organizacja typowego mikroprocesora

Podstawy Informatyki Języki programowania

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Mikroprocesor Operacje wejścia / wyjścia

Architektura komputerów. Układy wejścia-wyjścia komputera

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

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

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

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Budowa i zasada działania komputera. dr Artur Bartoszewski

Architektura komputerów

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Podstawy techniki cyfrowej i mikroprocesorowej - opis przedmiotu

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wykład 4. Środowisko programistyczne

ARCHITEKTURA PROCESORA,

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Podstawy Informatyki JA-L i Pamięci

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Technika mikroprocesorowa I Wykład 2

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Elementy cyfrowe i układy logiczne

Podstawy Informatyki Elementarne podzespoły komputera

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

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

Programowalne układy logiczne

Układy logiczne układy cyfrowe

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Elementy języków programowania

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

Automatyka. Treść wykładów: Multiplekser. Układ kombinacyjny. Demultiplekser. Koder

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

1 Podstawy c++ w pigułce.

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

Algorytm. a programowanie -

Programowanie niskopoziomowe

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

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

Budowa komputera Komputer computer computare

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Podstawy programowania

LICZNIKI PODZIAŁ I PARAMETRY

LEKCJA TEMAT: Zasada działania komputera.

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

dr inż. Jarosław Forenc

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

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

Architektura potokowa RISC

Programowanie w języku Python. Grażyna Koba

ARCHITEKTURA SYSTEMÓW MIKROPROCESOROWYCH. dr inż. Małgorzata Langer B9, pok. 310 Instytut Elektroniki

Cyfrowe układy scalone c.d. funkcje

Działanie systemu operacyjnego

Architektura i administracja systemów operacyjnych

organizacja procesora 8086

Programowanie w asemblerze Linkowanie

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

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Działanie systemu operacyjnego

Architektura systemów komputerowych

Transkrypt:

ARCHITEKTURA SYSTEMÓW MIKROPROCESOROWYCH część 2 dr inż. Małgorzata Langer B9, pok. 310 Instytut Elektroniki

Systemy funkcjonalnie pełne Każdą funkcję logiczną można przedstawić za pomocą argumentów i 3 operacji logicznych: suma, iloczyn, negacja (jest to podstawowy system funkcjonalnie pełny) ale techniczniedużo łatwiej stosować tylko jedną operację, która umożliwia przedstawienie dowolnej z 3 funkcji logicznych. Systemem funkcjonalnie pełnym jest funkcja NOR Systemem funkcjonalnie pełnym jest funkcja NAND 2

Oznaczenia elementów logicznych 3

Układy kombinacyjne i sekwencyjne Układ kombinacyjny jest zestawem wzajemnie połączonych bramek, którego stan wyjść w dowolnej chwili jest WYŁĄCZNIE funkcją stanu wejść W TEJ SAMEJ CHWILI Układ sekwencyjny jest zestawem wzajemnie połączonych bramek, którego stan wyjść w dowolnej chwili jest funkcją stanu wejść w tej chwili ORAZ STANU POPRZEDNIEGO czyli jest to układ z pamięcią 4

Podstawowe bloki funkcjonalne Powtarzające się, złożone funkcje logiczne nie są implementowane na schematach od podstaw czyli z bramek podstawowych, tylko zaznaczane jako typowe bloki funkcjonalne Sumator(jeżeli zaimplementowana jest operacja dodawania, to znaczy, że korzystając z tej samej sprzętowej aplikacji wykonać pozostałe działania odejmowanie, mnożenie i dzielenie) Koder i dekoder Konwerter kodu Multiplekser urządzenie przełączające wiele wejść jedno wyjście Demultiplekser - jedno wejście wiele wyjść 5

Logika dodatnia i ujemna W aplikacjach elektronicznych logiczne 0 i 1 są odwzorowywane dwoma rozróżnianymi wartościami napięcia (wynikającymi ze stanu nasycenia i odcięcia tranzystorów); wysokim (H) i niskim (L) Logika dodatnia Logiczne 1 H L Logiczne 0 L H Logika ujemna Ponieważ przypisanie logicznego znaczenia dwóm wartościom jest kwestią umowy, producenci IC opisują funkcje bramek i bloków poprzez H i L 6

Obciążenie i przebiegi czasowe Obciążalność maksymalny prąd, który może wpłynąć (lub wypłynąć) d/z wyjścia układu, który nie zmieni jej stanu logicznego W praktyce: obciążalność bramki jest to liczba bramek, których wejście można połączyć z wyjściem bramki W przebiegach czasowych uwzględniamy opóźnienie propagacji: X X 1 0 1 0 czas spadku (od 90% do 10% wartości opóźnienie propagacji czas czas wzrostu (od 10% do 90% wartości) 7

Przykład Schemat - bramki z opóźnieniami Zakładamy: T 3 > (T 1 + T 2 ) Wykres czasowy Hazard nie znamy odpowiedzi 8

Układy sekwencyjne Układy synchroniczne zachowanie układu synchronicznego zależy od wartości sygnału w dyskretnych chwilach czasu sygnał sterujący, taktujący, określający te chwile zegar Analiza synchronicznego układu sekwencyjnego polega na określeniu zależności funkcyjnych, które istnieją pomiędzy jego wyjściami, wejściami i stanami wewnętrznymi (jeżeli np. układ zawiera n przerzutników może być w 2 n stanów). Znając stan w chwili t, powinniśmy móc określić stan w t+1 Układy asynchroniczne brak sygnału taktującego 9

Rejestry Rejestr jest urządzeniem przechowującym dane zapisane w postaci binarnej; jest to zbiór przerzutników z oddzielnym torem dla każdego bitu. Najczęściej przeprowadzaną operacją na danych zapisanych w rejestrze jest SHIFT, polegająca na przesuwaniu ich (w zależności od kierunku przesyłania odpowiada to mnożeniu lub dzieleniu przez 2) W zależności od przeznaczenia rejestry mogą mieć wejścia szeregowe lub równoległe oraz wyjścia szeregowe lub równoległe Przeniesienie n-bitowejdanej z jednego rejestru do drugiego zabierze n impulsów shift przy trybie szeregowym a 1 w trybie równoległym Regułą jest, że połączenie szeregowe jest mniej kosztowne sprzętowo ale zabiera więcej czasu 10

Połączenia point-to-point lub poprzez magistralę Jeżeli w jakiejś procedurze należy dokonać wymiany danych między kilkoma rejestrami, stosowany jest jeden z dwóch systemów połączeń: POINT-TO-POINT jedna ścieżka łącząca każde dwa rejestry, które biorą udział w danej procedurze możliwe są działania równoległe; znacznie zwiększa się ilość sprzętu; każdy nowy rejestr musi zostacpołączony ze wszystkimi już istniejącymi MAGISTRALA (BUS) jedna wspólna ścieżka dzielona w czasie pomiędzy poszczególnych użytkowników w danej chwili tylko jeden rejestr może użytkować magistralę; każdy nowy rejestr musi być połączony tylko do magistrali, bez zmiany innych rejestrów. 11

Język HDL (Hardware Description Language) Przenoszenie danych w i pomiędzy rejestrami to podstawowa operacja w komputerze. Notacje HDL opisują strukturę hardware oraz zachowanie systemów cyfrowych na poziomie rejestrów Najbardziej znanymi językami HDL są VHDL oraz Verilog Ogólny format transferu rejestru: Przeznaczenie Źródło np. Y X zawartość rejestru x przeniesiona do rejestru Y Inne operacje: dodawanie (+), odejmowanie (-), przesuwanie w prawo o jeden bit (SHR) i w lewo (SHL), logiczne and (v), or(^), negacja ( ), łączenie konkatenacja (Φ) W językach HDL łańcuchy dużych liter oznaczają nazwy rejestrów, indeksy dolne numer lub zakres numerów bitów w rejestrze, w nawiasie nazywa się część zawartości w rejestrze, dwukropek ogranicza łańcuch wskazujący na funkcję, np. ADD: przecinek wskazuje na operacje równoległe a kropka kończy procedurę. Istnieje polecenie warunkowe if condition THEN. ELSE 12

Programowalne matryce logiczne PLA (Programmable Logic Arrays) układy w małej skali integracji (LSI) z wieloma bramkami, poprzez odpowiednie połączenia można uzyskać realizację żądanej funkcji logicznej Istnieje wiele realizacji sprzętowych umożliwiających programowanie prostych funkcji oraz programowanie wspomagające projektowanie GA (Gate Arrays) układy z bramkami z przygotowanymi kanałami połączeń Nie ma potrzeby projektować tylko przy pomocy bramek, można posługiwać się dodatkowymi blokami (tzwmakro-komórkami). Ten rodzaj układów nazywa się FPGA (Field Programmable GAs). Na rynku istnieją układy np. Xilinx(oparte o SRAM) 13

Podstawowa architektura prostego komputera (ASC) Elementy sprzętu Konsola Jednostka sterująca Jednostka arytm./ logiczna Rejestr stanu procesora Rejestr adresów pamięci (MAR) Licznik programu (PC) Rejestr akumulatora (ACC) Rejestry indeksowe Pamięć Rejestr bufora pamięci Rejestr instrukcji (IR) 14

Zasada działania ASC Program jest przechowywany w pamięci Instrukcja pobierana jest z pamięci do jednostki sterującej i wywoływane przez nią operacje są wykonywane Licznik programu zawiera adres instrukcji, która ma być pobrana z pamięci (zwiększany jest przez jednostkę sterującą przy końcu procedury pobrania instrukcji) Instrukcja pobierana jest do Rejestru Instrukcji (IR) Układy dołączone do IR (hardware) dekodują instrukcję i generują odpowiednie sygnały sterujące do wykonania operacji ACC (Rejestr akumulatora) zbiera wyniki operacji logicznych i matematycznych Rejestry indeksowe pomagają w manipulacji adresami PSR wskazują status ACC, przeniesienie, nadmiar, pozwolenie na przyjęcie przerwania 15

Adresowanie pamięci -słowo Słowo pamięci to najczęściej zapisywana i pobierana jednostka danych. Mogą być słowa 8, 16, 32, 64 bitowe; używane są również 6 i 36 bitowe Można adresować połówki i ćwiartki słów oraz wielokrotności (podwójne i poczwórne słowa) Długość słowa adresującego pamięć implikuje ilość pojedynczych słów, które możemy zaadresować, np. przy 16 bitowym słowie, będzie to 216= 65536 czyli 64K słów; przy 32 bitowym 232ale przy 8 bitowym jedynie 28= 256 16

Format danych i instrukcji W ASC pamięć jest matrycą słów, np. 16-bitowych, przy czym każde słowo ( wiersz matrycy ) może być albo daną, albo instrukcją. Interpretacja zależy od kontekstu. Format danych np. stałopozycyjna arytmetyka (sposoby zapisu były omawiane wcześniej) Format instrukcji: Opcode flags (indirect, index) Address OPCODE kod danej operacji, którą potrafi wykonać sprzęt (tzw. primitive) Indirect flag (pośredni wskaźnik) ustawiony na 1, jeżeli będzie adresowanie pośrednie, 0, jeżeli bezpośrednie Index flags wybierają jeden z indeksowych rejestrów przy indeksowanych adresach, lub jeżeli instrukcja przywołuje indeksowy rejestr 17

Format instrukcji Ilość bitów w części adresowej instrukcji wyznacza obszar pamięci, w którym muszą się znaleźć instrukcje programu Ze względu na to, czy instrukcje są wykonywane bez pobierania danych, z pobraniem jednego adresu lub więcej, rozróżnimy trzy klasy formatów. PRZYKŁADY INSTRUKCJI PODAWANE SĄ Z ZAKRESU HDL Bez adresu np. HLT (stop) W części Opcode jest całkowita instrukcja. HLT wskazuje logiczny koniec programu i zatrzymuje maszynę przed pobieraniem następnej instrukcji (nawet, gdyby takie były) Inne przykłady, to SHL (shift left), SHR (shift right), TCA uzupełnienie do 2; te operacje są wykonywane na zawartości ACC 18

Klasy instrukcji c.d. Instrukcje z jednym adresem podają lokalizację w pamięci, która zostanie użyta razem z ACC w danej instrukcji, np. LDA (ładuj -load); format instrukcji: LDA MEM ACC (z zawartości adresu MEM pobierz zawartość do ACC; zawartość pamięci nie zmieni się) Inne przykłady: STA (zapisz store zawartość ACC pod wskazany adres; nie zmieniaj zawartości ACC), ADD (dodaj zawartość pamięci do ACC; zawartość pamięci nie zmieni się) BRU instrukcja skoku bezwarunkowego do adresu... BIP instrukcja warunkowa (IF - jeżeli) Instrukcje z dwoma adresami typu input/output RWD (czytaj z urządzenia wejściowego i zapisz do ACC zawartość poprzednia zostanie utracona), WWD zapisz do urządzenia wyjściowego, zawartość ACC (nie zmieni się) 19

Tryby adresowania Tryby adresowania zależą od języka programowania oraz struktury danych, które stosowane są w maszynie. Zostaną omówione szerzej przy omawianiu dostępu do pamięci. Adresowanie może być bezpośrednie (Direct), lub indeksowane (indexed) Na przykładzie instrukcji load LDA MEM ACC (z zawartości adresu MEM pobierz zawartość do ACC; zawartość pamięci nie zmieni się) LDA Z pobierz dane z efektywnego adresu Z LDA Z, 2 pobierz dane spod adresu: Z + rejestr indeksowany, czyli z rejestru o numerze 2 Jeżeli w rejestrze nr 2 będzie zapisana np. wartość 4, to do akumulatora zostanie wpisana wartość spod adresu Z+4 Zawartość indeksowanego rejestru może rozszerzyć obszar pamięci 20

Rozszerzenie obszaru pamięci Załóżmy, że długość rejestru Z wynosi 8 bitów; wtedy zakres adresowania pamięci wynosi 256 możliwych lokalizacji Jeżeli offset, czyli rejestr indeksowany będzie miał 16 bitów efektywny adres będzie mógł być z zakresu 64K Przy programowaniu można zmieniać zawartości indeksowanych rejestrów, dynamicznie zmieniając adresowanie pamięci Tryb indeksowy wykorzystywany jest zawsze przy odwoływaniu się do elementów tablic (pole adresowe instrukcji wskazuje pierwszy element, a następne wskazywane są poprzez zwiększanie rejestru indeksowanego) 21

Adresowanie pośrednie LDA*Z gwiazdka po instrukcji wskazuje na adresowanie pośrednie Zawartośćpola o adresie Z wskazuje adres, gdzie znajduje się dana, która ma zostać wpisana do akumulatora Również adresowanie pośrednie może służyć do rozszerzenia zakresu adresowania pamięci Przy programowaniu wykorzystywane ze wskaźnikiem (pointer), który może wskazywać różne zakresy danych 22

Jednoczesneużycie adresowania pośredniego i indeksowanego LDA*Z,2 Logicznie: można wykonać wpierw indeksowanie (czyli przesunąć adres Z) a potem adresowanie pośrednie (z obliczonego adresu pobrać adres danej do umieszczenia w akumulatorze) tzw.: Preindexed-Indirect można wykonać wpierw adresowanie pośrednie (pobrać adres danej) a później indeksowanie (czyli obliczyć nowy adres) tzw.: Postindexed- Indirect Dana implementacja umożliwia JEDEN sposób 23

Język maszynowy Używane są wyłącznie ciągi zer i jedynek. Adresowanie jest wyłącznie bezpośrednie Praktycznie nie jest możliwe (a przynajmniej stosowane) bezpośrednie pisanie programu w takiej postaci ale do takiej postaci program zostanie przetłumaczony Do tłumaczenia służą asembleryi kompilatory, które przekształcają programy pisane w asemblerze lub językach wyższego poziomu na język maszynowy W przeszłości były używane języki interpretowane (Basic), gdzie Interpretator przekształcał na język maszynowy linijka po linijce podczas wykonywania programu 24

Asembler Składa się z sekwencji instrukcji kodowanych tzw. Mnemonikami oraz adresów. Każda instrukcja składa się z 3 lub 4 pól: - label (etykieta) -mnemonic(standardowy trzyliterowy ciąg liter wskazujący na instrukcję; gwiazdka, jako czwarty znak wskazuje na pośrednie adresowanie) -operand(zawiera absolutny lub symboliczny adres; jeżeli występuje adresowanie z rejestrem indeksowanym, to umieszcza się go po przecinku) -komentarze (pole opcjonalne, zaczyna się od kropki i asembler ignoruje to pole) 25

Ciąg znaków alfanumerycznych Etykieta Etykieta jest symboliczną nazwą, wskazującą lokalizację w pamięci, gdzie znajduje się sama instrukcja Nie trzeba nadawać etykiety dla każdej instrukcji, tylko dla takich, które wywoływane są wielokrotnie z wnętrza programu Pierwszy znak musi być literą lub gwiazdką * (gwiazdka) na początku oznacza, że cała instrukcja jest tylko komentarzem (nie będzie wykonywana) 26

Instrukcje i pseudoinstrukcje Instrukcja jest wykonywalna (executable instruction); asembler generuje dla każdej instrukcji w asemblerze instrukcję w języku maszynowym - wszystkie podane wcześniej przykłady instrukcji Pseudoinstrukcja, (lub dyrektywa dla asemblera assembler directive) służy do sterowania procesem, zarezerwowania pamięci, ustalenia stałych nie powstaje dla niej instrukcja w języku maszynowym; najczęściej umieszcza się pseudoinstrukcje na początku programu -np. Z BSS 5(block storage starting -rezerwuje 5 lokalizacji poczynając od pierwszego adresu o nazwie Z) 27

Proces wykonywany przez asembler Asembler musi spełnić dwie funkcje: -wygenerować adres dla każdej symbolicznej nazwy w programie źródłowym - wygenerować ekwiwalent w kodzie binarnym dla każdej instrukcji Proces asemblera zwykle dokonywany jest w dwóch przejściach: -pierwsze przejście dla zabezpieczenia lokalizacji pamięci dla każdej symbolicznej nazwy użytej w programie -w drugim przejściu wpisane są rozwiązania dla wszystkich odwołań do tych nazw Jeżeli wszystkie nazwy muszą zostać zadeklarowane przed odwołaniem wystarcza jedno przejście 28

Ładowanie programu Kod wynikowy (object code) musi zostać załadowany do pamięci maszyny, zanim zostanie wykonany Dokonuje tego loader(zapisany na stałe znacznik, wskazujący na początkowy adres programu, lub inicjujący jego wczytanie z urządzenia zewnętrznego) 29

Podprogramy (subroutines) Jest to część kodu większego programu, która wykonuje szczególne zadanie i jest niezależna od kodu pozostałego Niektóre języki (np. Pascal, Fortran) rozróżniają funkcje(zwracają wartość) i procedury(nie zwracają wartości) Inne (np. C lub LISP) traktują wszystkie podprogramy jednakowo Wywołanie podprogramu oznacza skok do pierwszej instrukcji podprogramu (instrukcja JMP). Zakończeniepodprogramu skutkuje powrotnym skokiem do tego samego punktu w programie, z którego był wywołany podprogram (powrót) Ponieważ ten sam podprogram może być wywoływany w danym programie wiele razy adres powrotu(return address) musi być zapisany w pamięci 30

Podprogramy c.d. Możliwe jest zagnieżdżaniepodprogramów (nested call) czyli podprogram wywołuje kolejny podprogram) trzeba zabezpieczyć wtedy pierwotny adres powrotu przed utraceniem; adresy powrotu składowane są najczęściej na stosie, co umożliwia odtworzenie całej sekwencji zagnieżdżania Podprogramy mogą potrzebować dodatkowych danych, przygotowywanych wcześniej przez główny program oraz przekazywać przetworzone dane do programu. Należy zabezpieczyć prawidłowe zawartości akumulatora i rejestrów przed wywołaniem podprogramu a później przed skokiem powrotnym (również wykorzystuje się tu stos). 31

Makroinstrukcje Jest to grupa instrukcji, która zostaje zakodowana tylko raz i później, w programie, może być używana tyle razy, ile potrzeba Inaczej niż podprogramy wywołanie makroskutkuje podstawieniem grupy instrukcji, które składają się na makro. Nie ma skoku. Można przekazywać parametry do makro-instrukcji; przy podstawieniu instrukcji, każdy parametr zostanie zastąpiony wartością z wywołania 32

Przykład makroinstrukcji Makroinstrukcja o nazwie DOD, która doda wartości A i B i umieści je w C (czyli A, B, C są parametrami) MACRO DOD (A, B, C) LDA A ADD B STA C ENDM Wywołanie tej makroinstrukcji w programie będzie miało postać: DOD(X, Y, Z) Asembler zastąpi DOD trzema instrukcjami, które się na tę makroinstrukcję składają; po asemblacji, A, B i C nie są już widoczne (program widzi tylko X, Y, Z) 33

Linker W praktyce program będzie się składał z programu głównego i kilku podprogramów (modułów). Moduły mogą pochodzić albo z wcześniej zdefiniowanej biblioteki, albo być przygotowane dla danej, szczególnej aplikacji Moduły tłumaczone są na kod maszynowy niezależnie od głównego programu Podczas asemblacji program łączący (linker) wstawia kod maszynowy danego modułu do danego pojedynczego programu głównego Linker musi rozwiązać odwołania do symboli i zastąpić je właściwymi adresami Często linker musi również zmienić wartości adresów skoków, zapamiętywania, ładowania oraz zadbać, aby poszczególne podprogramy nie nakładały się na siebie 34

Łączenie dynamiczne Dopiero załadowanie programu będzie dokonywało ostateczego łączenia. Wcześniej, program będzie zawierał niezdefiniowane symbole i listę modułów i/lub bibliotek Oszczędzamy miejsce (często używane moduły są składowane raz, nie są częścią zapisanych programów co znacznie zwiększałoby ich wielkość) Możemy wymieniać poszczególne moduły lub biblioteki (również poprawiać znajdujące się w nich błędy) i nic nie zmieniać w programach W Microsoft Windows dynamically linked libraries to DLL 35

Łączenie dynamiczne c.d. Większość systemów opartych na Unixie posiada search path, która podaje katalogi systemowe, w których należy szukać bibliotek dynamicznych Niektóre systemy podają ścieżki w pliku konfiguracji W niektórych na trwale zapisane są adresy w programie ładującym (loader) API(application program interface) linker działający w momencie wywołania przez aplikację (stosowane we wszystkich współczesnych systemach operacyjnych) Wada łączenia dynamicznego jeżeli zostanie dokonana nieodpowiedzialna zmiana w przechowywanych bibliotekach programy lub cały system przestaną działać. 36

System operacyjny Z perspektywy systemu jest to program najbliżej powiązany ze sprzętem dystrybutor zasobów(resource allocator) Jest to program sterujący(control program) nadzorujący działanie programów uzytkownika oraz obsługą i kontrolą pracy urządzeń wejścia wyjścia System operacyjny, jest to ten program, który działa w systemie mikroprocesorowym, w komputerze przez cały czas i nazywany jest jądrem(kernel) W 1998 roku rozpoczął się pierwszy (do dzisiaj było już ich wiele) proces przeciwko Microsoft o zaliczanie zbyt wielu funkcji komputera do systemu operacyjnego i uniemożliwienie tym samym konkurencji ze strony dostawców aplikacji (programów użytkowych) 37

System operacyjny definicje zadań Celem systemu operacyjnego jest wygoda użytkownika Celem OS jest zapewnienie wydajnego działania systemu komputerowego Są to często sprzeczne ze sobą wymagania Systemy operacyjne i architektura komputerów wywarły i wywierają na siebie wzajemny wpływ Znaczący wpływ na rozwój OS wywarły sieci komputerowe, wprowadzając sieciowe systemy operacyjne (NOS network operating system) 38

Program rozruchowy Bootstrap program wstępny program potrzebny, aby komputer mógł rozpocząć pracę (po włączeniu do zasilania). Określa on stan początkowy wszystkich elementów systemu, poczynając od rejestrów jednostki centralnej, poprzez sterowniki urządzeń, aż po zawartość pamięci Musi wiedzieć, jak załadować system operacyjny i rozpocząć jego działanie musi zlokalizować i wprowadzić do pamięci jądro systemu operacyjnego; OS rozpoczyna wówczas wykonanie pierwszego procesu (w Unixie jest to INIT) i zaczyna czekać na wystąpienie jakiegoś zdarzenia. Przechowuje się go w pamięci stałej, tylko do odczytu (ROM read only memory), aby nie mógł zostać skasowany 39