1 / 21

Wykorzystanie procedur

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

marlon
Télécharger la présentation

Wykorzystanie procedur

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wykorzystanie procedur

  2. Procedury 2/21 Współużywalność procedurWspółbieżność procesówWymiana informacji z procedurami

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

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

  6. Procedury - współużywalność 6/21 Przykład dynamicznego przydziału RAM na stosie dla zmiennych roboczych procedury: procX: PUSH IX ; składowanie na stosie rejestrów ; w tym także IX LD IX,-wor ; wor=wielkość obszaru roboczego w bajtach ADD IX,SP LD SP,IX ; zarezerwowanie obszaru roboczego na stosie ; treść procedury, ; dostęp do elementów obszaru roboczego ; np. adresowaniem indeksowym (IX+dd) LD IX,wor ; zwolnienie obszaru roboczego ADD IX,SP ; ze stosu pod koniec procedury LD SP,IX POP IX ; 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: LD B,k ; [7] CALL delay ; [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.5MHz k=1 N=80 T=32s t=400ns k=0 N=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: LD DE,tabliczb ;wskazanie na adr. pocz. tablicy LD HL,sumael ;wskazanie na słowo wyniku LD B,iloscel CALL sumy

  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: PUSH AF ;przechowanie AF na stosie XOR A LD (HL),A ;zerowanie bajtów wyniku INC HL LD (HL),A DEC HL sumy1: LD A,(DE) ;A:=element tablicy ADD A,(HL) ;dodawanie 2-bajtowe LD (HL),A INC HL LD A,(HL) ADC A,0 LD (HL),A DEC HL INC DE ; następny element tablicy DJNZ sumy1 ; dekrement licznika B POP AF ; 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: LD BC,4 ; inicjacja obszarów wspólnych LD HL,liczba1 LD DE,l1 LDIR LD BC,4 LD HL,liczba2 LD DE,l2 LDIR CALL dod4b LD HL,(lw) ; skopiowanie wyniku z obszaru LD (suma),HL ; wspólnego do zmiennej roboczej LD HL,(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:EX AF,AF’ ; wybór alternatywnego AF PUSH BC ; składowanie BC na stosie PUSH IX ; składowanie IX na stosie LD B,4 ; licznik bajtów LD IX,l1 ; IX->obszar wspólny XOR A ; CY:=0 dodb: LD A,(IX+0) ; A:=bajt z l1 ADC A,(IX+l2-l1) ; dodanie bajtu z l2 LD (IX+lw-l1),A ; bajt sumy do lw INC IX ; następne bajty DJNZ dodb POP IX ; odtworzenie rejestrów POP BC EX AF,AF' RET

  14. Procedury 14/21 Stały obszar w asemblerze może być definiowany na różne sposoby: ORG 9000h l1: DFS 4 l2: DFS 4 lw: DFS 4 albo: l1: EQU 9000h l2: EQU 9004h l3: EQU 9008h

  15. program wpis call odczyt dane dane dane dane program wpis call odczyt proc. np. arytm. dane dane proc. np. arytm. dane dane obsługa przerw. Procedury 15/21 Stały obszar a współużywalność procedury wariant „bezpieczny” 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: CALL delayk ; [17] DFB k

  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 LD B,(HL) ; [7] B:=krotność k INC HL ; [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 DJNZ delay ; [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: LD HL,(...) ; zapis k liczb PUSH HL ; na stos LD HL,k PUSH HL ; k na stos CALL sumujkliczb INC SP ; k INC SP ; razy POP HL ; 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: PUSH HL PUSH BC ; składowanie rejestrów na stosie PUSH DE PUSH AF LD HL,10 ADD HL,SP ; IX->k na stosie LD B,(HL) ; B - licznik liczb INC HL EX DE,HL LD HL,0 ; wyzerowanie sumy S sumujliczbe: INC DE ; DE->liczba na stosie LD A,(DE) ; A:=młodszy bajt ADD A,L LD L,A INC DE LD A,(DE) ; A:=starszy bajt ADC A,H LD H,A DJNZ sumujliczbe; dekrement licznika powtórzeń

  20. Procedury 20/21 LD (DE),A ; zapisanie sumy S na stosie DEC DE ; w miejscu pierwszej z liczb LD A,L LD (DE),A ; zapis młodszego bajtu POP AF ; odtworzenie rejestrów POP DE POP BC POP HL RET

  21. Procedury 21/21

More Related