Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wykorzystanie procedur. Współużywalność procedur Współbieżność procesów Wymiana informacji z procedurami Procedury 2/21.

Podobne prezentacje


Prezentacja na temat: "Wykorzystanie procedur. Współużywalność procedur Współbieżność procesów Wymiana informacji z procedurami Procedury 2/21."— Zapis prezentacji:

1 Wykorzystanie procedur

2 Współużywalność procedur Współbieżność procesów Wymiana informacji z procedurami Procedury 2/21

3 Procedury - współużywalność 3/21 współużywalność procedury - polega na tym, że przerwanie wykonywania procedury i powtórne jej wywołanie z innego miejsca programu (np. z wnętrza procedury obsługi przerwania) nie zaburza pracy żadnego z programów wywołujących. Podstawowe warunki współużywalności to: - niestosowanie samomodyfikacji kodu programu/procedury; - stosowanie dynamicznego przydziału RAM na zmienne robocze (np. na stosie), zamiast stałych obszarów roboczych oraz stałych obszarów na parametry i wyniki.

4 Procedury - współużywalność 4/21 Ilustracja współużywalności w systemie jednozadaniowym … ld A,B add A,D … ret AR1: (proc. arytm.)... ld B,14 ld D,17 call AR1 ld (wyn2),A... reti INTSRV: (proc. obsługi przerwania) … ld B,4 ld D,7 call AR1 ld (wyn1),A … program główny ! Procedura AR1 wykorzystuje/zmienia rejestry: A, F ! Procedura INTSRV wykorzystuje/zmienia rejestry: B, D, A, F

5 Procedury - współużywalność 5/21 Ilustracja współużywalności w systemie wielozadaniowym … ld A,B add A,D … ret AR1: (proc. arytm.) program #2... ld B,4 ld D,7 program #1... ld B,10 call AR1 ld (wyn1),A... ld D,11 call AR1 ld (wyn2),A

6 Procedury - współużywalność 6/21 Przykład dynamicznego przydziału RAM na stosie dla zmiennych roboczych procedury: procX:PUSHIX; składowanie na stosie rejestrów ; w tym także IX LDIX,-wor; wor=wielkość obszaru roboczego w bajtach ADDIX,SP LDSP,IX; zarezerwowanie obszaru roboczego na stosie ; treść procedury, ; dostęp do elementów obszaru roboczego ; np. adresowaniem indeksowym (IX+dd) LDIX,wor; zwolnienie obszaru roboczego ADDIX,SP; ze stosu pod koniec procedury LDSP,IX POPIX; odtworzenie IX i innych rejestrów RET

7 Procedury - współbieżność procesów 7/21 Współbieżność procesów/programów polega na tym, że mikroprocesor realizuje jednocześnie 2 lub więcej programów - oczywiście z tzw. podziałem czasu (przełączanie dostępu do procesora poszczególnych programów regulowane timerem - procesy równorzędne, albo przerwaniami od asynchronicznych zdarzeń zewnętrznych - program tła i procedury obsługi przerwań). Aby te zadania były realizowane poprawnie muszą być spełnione warunki: - rozdzielenie obszarów danych i kodu poszczególnych programów; - stosowanie procedur współużywalnych.

8 Procedury 8/21 Procedury są zwykle wywoływane w celu określonej obróbki informacji. Procedury z reguły wymagają danych do swej pracy czyli parametrów i generują tzw. wyniki. Sposób wymiany informacji pomiędzy programem wywołującym a procedurą, tzn.: a) przekazanie procedurze parametrów; b) odebranie od niej wyników; jest uzależniony od szeregu czynników: liczby dostępnych aktualnie rejestrów P; dostępnego obszaru PAO; wymaganej szybkości działania; typu pamięci programu i danych (ROM czy RAM); uniwersalności i prostoty wymiany danych; wpływu na współużywalność procedury wołającej i wywoływanej.

9 Procedury 9/21 1. Przekazywanie parametrów/wyników przez rejestry Szybki sposób przekazywania niewielkiej ilości danych. ; procedura generująca programowo zadane opóźnienie ; parametry: B - czas opóźnienia delay:EX(SP),HL;2-krotna zamiana HL[19] EX(SP),HL;z wierzchołkiem stosu[19] DJNZ delay;dekrement licznika powtórzeń[13/8] RET;[10] ; przykład wywołania: LDB,k; [7] CALLdelay; [17] (RST delay ;[11]) czas trwania opóźnienia (łącznie z wywołaniem) [w taktach CLK]: N=(7+17)+(19+19)k+13(k-1)+8+10=51k+29 fosc=2.5MHzk=1N=80 T=32 s t=400nsk=0N=13138 T=5.25ms

10 Procedury 10/21 2. Przekazywanie parametrów/wyników przez rejestry pośrednio Wykorzystuje się mechanizmy adresowania za pośrednictwem rejestrów procesora. Metoda pozwala przekazywać procedurze / odbierać od niej wskazania do obszarów danych o dowolnej wielkości. Zwykle stosowana do przekazywania wskaźników do struktur tablicowych, rekordowych. ; przykład wywołania: LDDE,tabliczb;wskazanie na adr. pocz. tablicy LDHL,sumael;wskazanie na słowo wyniku LDB,iloscel CALLsumy

11 Procedury 11/21 ; procedura sumująca 1-bajtowe elementy tablicy ; parametry: B - liczba elementów do zsumowania; ; DE - początek tablicy; ; HL - adres 2-bajtowego wyniku operacji. ; zmiany: DE:=DE+B, B:=0. sumy:PUSHAF;przechowanie AF na stosie XORA LD(HL),A;zerowanie bajtów wyniku INCHL LD(HL),A DECHL sumy1: LDA,(DE);A:=element tablicy ADDA,(HL);dodawanie 2-bajtowe LD(HL),A INCHL LDA,(HL) ADCA,0 LD(HL),A DECHL INCDE; następny element tablicy DJNZsumy1; dekrement licznika B POPAF; odtworzenie AF ze stosu RET

12 Procedury 12/21 3. Przekazywanie parametrów/wyników przez wspólny, stały obszar w RAM Sposób umożliwiający przekazywanie dużych ilości danych. Związany jest z koniecznością dodatkowego przesyłu informacji do stałego obszaru przed wywołaniem procedury i/lub z tego obszaru po wyjściu z procedury. Wpływa negatywnie na współużywalność procedury. ; przykład wywołania: LDBC,4; inicjacja obszarów wspólnych LDHL,liczba1 LDDE,l1 LDIR LDBC,4 LDHL,liczba2 LDDE,l2 LDIR CALLdod4b LDHL,(lw); skopiowanie wyniku z obszaru LD(suma),HL; wspólnego do zmiennej roboczej LDHL,(lw+2) LD(suma+2),HL

13 Procedury 13/21 ; procedura realizująca dodawanie liczb 4-bajtowych ; parametry: l1,l2 - 4-bajtowe obszary ze składnikami; ; wyniki: lw - 4-bajtowa suma dod4b:EXAF,AF; wybór alternatywnego AF PUSHBC; składowanie BC na stosie PUSHIX; składowanie IX na stosie LDB,4; licznik bajtów LDIX,l1; IX->obszar wspólny XORA; CY:=0 dodb:LDA,(IX); A:=bajt z l1 ADCA,(IX+l2-l1); dodanie bajtu z l2 LD(IX+lw-l1),A; bajt sumy do lw INCIX; następne bajty DJNZdodb POPIX; odtworzenie rejestrów POPBC EXAF,AF' RET

14 Procedury 14/21 Stały obszar w asemblerze może być definiowany na różne sposoby: ORG9000h l1:DEFS4 l2:DEFS4 lw:DEFS4 albo: l1:EQU9000h l2:EQU9004h l3:EQU9008h

15 Procedury 15/21 program wpis call odczyt proc. np. arytm. dane Stały obszar a współużywalność procedury wariant bezpieczny obsługa przerw. program wpis call odczyt proc. np. arytm. dane wariant krytyczny

16 Procedury 16/21 4. Przekazywanie parametrów przez listę w treści programu Wykorzystuje się mechanizmy dostępu do stosu. Metoda stosowana do przekazywania parametrów, których wartość jest już znana na etapie asemblacji (np. maks. liczba iteracji, liczba wykonania pętli opóźniającej). Zwykle stosowana do przekazywania wskaźników do struktur tablicowych, rekordowych. ; przykład wywołania: CALLdelayk; [17] DEFBk

17 Procedury 17/21 ; procedura realizująca opóźnienie ; parametry: k - krotność powtórzenia pętli, podana za kodem ; rozkazu wywołania ; zmiany: rej.F, B:=0 delayk:EX(SP),HL; [19] HL:=adres powrotu LDB,(HL); [7] B:=krotność k INCHL; [6] inkrement adresu powrotu EX(SP),HL; [19] nowy adres powrotu na stos delay:EX(SP),HL; [19] rozkazy dające EX(SP),HL; [19] opóźnienie DJNZdelay; [13/8] dekrement licznika powtórzeń RET; [10] czas trwania opóźnienia [w taktach CLK] (łącznie z wywołaniem): N=51k+73

18 Procedury 18/21 5. Przekazywanie parametrów / wyników przez stos Wykorzystuje się mechanizmy dostępu do stosu. Dobra metoda, zapewniająca dynamiczny przydział pamięci dla zmiennych, ale wymaga nieco uwagi przy programowaniu, ponieważ ingeruje w strukturę stosu. Zwykle stosowana przez kompilatory do przekazywania parametrów do procedur i tworzenia dla nich dynamicznych obszarów roboczych. ; przykład wywołania: LDHL,(...); zapis k liczb PUSHHL; na stos LDHL,k PUSHHL; k na stos CALLsumujkliczb INCSP; k INCSP; razy POPHL; HL:=suma

19 Procedury 19/21 ; procedura sumująca k liczb 2-bajtowych ; parametry: liczby i licznik k - na stosie ; wynik: suma - na stosie, zamiast pierwszej z sumowanych liczb sumujkliczb:PUSHHL PUSHBC; składowanie rejestrów na stosie PUSHDE PUSHAF LDHL,10 ADDHL,SP; IX->k na stosie LDB,(HL); B - licznik liczb INCHL EXDE,HL LDHL,0; wyzerowanie sumy S sumujliczbe:INCDE; DE->liczba na stosie LDA,(DE); A:=młodszy bajt ADDA,L LDL,A INCDE LDA,(DE); A:=starszy bajt ADCA,H LDH,A DJNZsumujliczbe; dekrement licznika powtórzeń

20 Procedury 20/21 LD(DE),A; zapisanie sumy S na stosie DECDE; w miejscu pierwszej z liczb LDA,L LD(DE),A; zapis młodszego bajtu POPAF; odtworzenie rejestrów POPDE POPBC POPHL RET

21 Procedury 21/21


Pobierz ppt "Wykorzystanie procedur. Współużywalność procedur Współbieżność procesów Wymiana informacji z procedurami Procedury 2/21."

Podobne prezentacje


Reklamy Google