curs 11 stiva

68
Arhitectura Calculatoarelor Cătălina Mancaș Dan Mancaș [email protected] [email protected] Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electronică Catedra de Ingineria Calculatoarelor și Comunicații Stiva

Upload: liviuemilia

Post on 19-Dec-2015

292 views

Category:

Documents


1 download

DESCRIPTION

stiva

TRANSCRIPT

Arhitectura

Calculatoarelor

Cătălina Mancaș Dan Mancaș

[email protected] [email protected]

Universitatea din Craiova

Facultatea de Automatică, Calculatoare și Electronică

Catedra de Ingineria Calculatoarelor și Comunicații

Stiva

ARHITECTURA CALCULATOARELOR – Stiva

Astăzi...

Ultimul curs

2

ARHITECTURA CALCULATOARELOR – Stiva

Astăzi...

Ultimul curs

Stiva:

– Noțiuni și definiții;

– Categorii;

– Instrucţiuni de lucru cu stiva la microprocesorul I8080;

– Instrucţiuni pentru apelul de proceduri la microprocesorulI8080.

3

ARHITECTURA CALCULATOARELOR – Stiva

Stiva: Definiţie

O colecţie de date (d.p.d.v. informaţional);

O reuniune de registre (d.p.d.v. structural);

O porţiune de memorie (d.p.d.v. structural);

O listă (d.p.d.v. al structurilor de date).

4

ARHITECTURA CALCULATOARELOR – Stiva

Stiva: Definiţie

O colecţie de date ce sunt plasate în locaţiisuccesive de memorie sau într-o reuniune de registre,prevăzute cu mecanisme specifice de acces;

O reuniune de registre dotate cu un mecanismspecific de acces printr-un punct de acces, care senumeşte vârful stivei;

O porţiune de memorie la care accesul se faceprintr-o locaţie unică, numită vârful stivei;

O listă de tip LIFO (Last In First Out).

5

ARHITECTURA CALCULATOARELOR – Stiva

Stiva: Alte definiții...

Lungimea stivei: numărul de elemente dintr-o stivă;

Vârful stivei: ultimul registru sau ultima locaţie dememorie cu care s-a operat;

Evidenţa vârfului stivei se realizează cu un contor destivă sau numărător de stivă numit stack pointer (SP);

Întotdeauna valoarea SP reprezintă adresa vîrfului stivei;

Asupra stivei se pot defini două operaţii:

– Introducerea (inserarea) de noi elemente în stivă

operaţia de scriere în stivă, numită PUSH;

– Extragerea (eliminarea) elemetelor din stivă operaţiade citire din stivă, numită POP.

După fiecare operaţie PUSH sau POP se modifică SP.

6

ARHITECTURA CALCULATOARELOR – Stiva

Stiva: Alte definiții...

Dimensiunea SP depinde de dimensiunea stivei;

Dacă SP are n biţi atunci mărimea stivei este de 2n

elemente;

Orice operaţie cu stiva are loc numai prin vârful stivei;

De aceea, se spune că vârful stivei este mobil;

Stare de plin: momentul în care toate elementele stiveisunt pline sau ocupate;

Stare de gol: momentul în care s-a extras şi ultimulelement din stivă, aflat în bază;

Stiva prezintă doi indicatori de stare, ce indică starea deplin respectiv starea de gol a unei stive.

7

ARHITECTURA CALCULATOARELOR – Stiva

Stiva: Alte definiții...

Orice stivă are o bază (de unde începe umplerea) şi unpalier superior numit plafon;

Porţiunea ocupată: de la bază până la vîrful stivei inclusiv;

Porţiunea liberă: de la vârful stivei până la plafon.

8

BAZĂ

VÂRF

PLAFON

PARTEA

LIBERĂ

PARTEA

OCUPATĂ

ARHITECTURA CALCULATOARELOR – Stiva

Stiva: Categorii

Stivă hardware: definită pe grupuri de registre;

Stivă software: definită în memoria calculatorului.

9

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Hardware

O colecţie de registre la care mecanismul de acces se faceprin vârful stivei:

– definit de contorul stivei (SP);

– reprezintă ultimul registru cu care s-a operat;

Registrul tampon al stivei (SBR - Stack Buffer Register),care comunică cu magistrala de date (DATA BUS);

3 indicatori de stare ai stivei:

– P: indicatorul de plin;

– G: indicatorul de gol;

– E: indicatorul de eroare.

10

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Hardware

Două operaţii: PUSH și POP ;

1) PUSH: înscrierea datei, memorate din SBR în stivă.

Paşii de execuţie:

1. Se testează indicatorul P:

– Dacă P=1 => stiva este plină, se generează eroare E=1 şi

operaţia se încheie;

– Dacă P=0, se trece la pasul următor.

2. Se incrementează SP;

3. Data din SBR se introduce în vârful stivei;

4. Dacă valoarea nouă a SP este 2k-1 atunci se setează

indicatorul P (P=1);

5. Stop operaţie.

11

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Hardware

2) POP: extragerea datei din vârful stivei, transferul ei în

SBR după care are loc decrementarea SP-ului.

Paşii de execuţie sunt următorii:

1. Se testează indicatorul G:

– Dacă G=1 => stiva este goală, se generează eroare E=1 şi

operaţia se încheie;

– Dacă G=0, se trece la pasul următor.

2. Se citeşte registrul din vârful stivei şi se transferă în SBR;

3. Se decrementează SP-ul pentru a defini noul vârf al stive;

4. Dacă valoarea nouă a SP devine 2k-1, atunci se setează

indicatorul G (G=1);

5. Stop operaţie.

12

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Hardware

13

B

A

.

.

.

.

.

C

n

2k-1 PLAFON

2k-2

0

1

2

BAZA

VARF

SBR

0 1 ....... (n - 1)

SP

0 1 ........ (k - 1)

INC

DEC

PUSH

POP

E P G

INDICATORI DE STARE

n

MAGISTRALA DE DATE

n

n

.

.

.

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Software

Se defineşte în spaţiul memoriei;

Reprezintă un bloc continuu de locaţii de memorie din MP;

Dimensiunea stivei: memorarea:

– limitei superioare şi

– limitei inferioare;

Limite: adrese de memorie memorate în două registregenerale din CPU (REG1 şi REG2);

REG 1 din CPU indică plafonul stivei;

REG 2 din CPU indică baza;

Evidenţa vârfului stivei se face tot prin SP şi care estedefinit în REG 3 din CPU.

14

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Software

Orice operaţie cu stiva trebuie să înceapă prin a comparaSP cu conţinutul registrelor REG1 sau REG2;

La o operaţie PUSH trebuie să se compare SP cu adresaplafonului, în timp ce la o operaţie POP trebuie să secompare SP cu baza stivei;

Mai lentă decât stiva Hardware deoarece ele sunt definiteîn spaţiul de memorie operativă, iar operaţiile cu memoriasunt consumatoare de timp;

Accesul la stivă se face ca la orice memorie prin registrulMAR;

Comunicaţia stivei cu magistrala de date sau DATA BUS seface prin registrul MBR.

15

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Software

O operaţie PUSH declanşează un ciclu de scriere (WRITE)în memorie, iar o operaţie POP un ciclu de citire (READ);

Există două tipuri de stive software:

– stive cu umplere în sus;

– stive cu umplere în jos.

Stivă software cu umplere în sus: după operaţia PUSHare loc incrementarea adreselor;

– Baza stivei se află la adresa minimă, iar plafonul la adresamaximă;

Stivă software cu umplere în jos: operaţia PUSHpresupune decrementarea adreselor;

– Baza este la adresa maximă, iar plafonul la adresa minimă.

16

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Software

Cele două operaţii:

1) PUSH:

1. Data este adusă în MBR;

2. Se compară conţinutul registrului REG3 (SP) care conţine

vârful stivei cu conţinutul registrului REG1 care conţine

adresa plafonului;

3. Dacă REG 3 (SP) = REG 1 => E=1 (stiva este plină);

4. Dacă nu sunt egale, atunci se trece la pasul următor;

5. Se incrementează conţinutul REG3;

6. Se transferă conţinutul REG3 (SP) în MAR;

7. Se declanşează un ciclu de WRITE: din MBR, data se înscrie

în locaţia de memorie reprezentând vârful stivei;

8. Stop operaţie.

17

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Software

2) POP:

1. Se compară conţinutul registrului REG3 (SP) care conţine

vârful stivei cu conţinutul registrului REG2 care conţine

adresa bazei;

2. Dacă sunt egale atunci E=1 (stiva este goală);

3. Dacă nu sunt egale, atunci se trece la pasul următor;

4. Se transferă conţinutul lui REG3 (SP) în MAR;

5. Se declanşează un ciclu READ;

6. Se transferă data din locaţia definită de vârful stivei în MBR,

de unde apoi este disponibilă pe magistrala de date;

7. Se decrementează valoarea REG3, adică se decrementează

SP-ul pentru a pointa câtre noul vârf al stivei;

8. Stop operaţie.

18

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Software

19

E

INDICATORI DE STARE

MBR

0 1 ........ (n -1)

n

MAGISTRALA DE DATE

n

n

MA

R

(k-1

) ......... 1

0

ADRESA VARFUL

STIVEI

ADRESA LIMITA

SUPERIOARA

ADRESA LIMITA

INFERIOARA

n

MEMORIE DATE

REG1

REG2

REG3

(SP)k

VARF

ARHITECTURA CALCULATOARELOR – Stiva

Stiva Software

Prezentarea operaţiilor s-a facut pentru cazul stivelorsoftware cu umplere în sus;

În cazul stivelor cu umplere în jos se inversează operaţiilede incrementare cu cele de decrementare.

20

ARHITECTURA CALCULATOARELOR – Stiva

Evaluarea expresiilor folosind stiva

Calculatoarele orientate pe stivă (stack computers)utilizează instrucţiuni fără adresă, ce pot:

– extrage doi operanzi din stivă;

– efectua o operaţie asupra lor;

– depune rezultatului în stivă.

Unele probleme care se rezolvă în mod eficient decalculatoarele orientate pe stivă sunt:

– transformarea expresilor aritmetice din forma infixată înforma postfixată;

– evaluarea expresiilor aritmetice.

21

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiuni de lucru cu stiva la microprocesorul I8080

22

ARHITECTURA CALCULATOARELOR – Stiva

Instrucțiuni de lucru cu stiva

La microprocesorul I8080:

– Instrucţiunea PUSH;

– Instrucţiunea POP;

– Instrucţiunea LXI.

23

ARHITECTURA CALCULATOARELOR – Stiva

Registre la microprocesorul I8080

A: 8 biţi; deţine unul din operanzi sau rezultatul;

A este în comunicaţie directă cu ALU;

Registrele generale: 8 biţi (B, C, D, E, H şi L) pot fi organizate în perechi (BC, DE, HL);

Accesul la aceste registre se face pe baza adresei de registru;

De obicei cel de-al doilea operand se află în unul dintre aceste registre generali;

Registre pe 16 biţi: SP şi PC.

24

A PSW

B C

D E

H L

SP

PC

RI

8 biti

16 biti

8 biti 8 biti

ARHITECTURA CALCULATOARELOR – Stiva

Registre la microprocesorul I8080

PSW: registrul indicatorilor de stare - un registru pe 8 biţi din care sunt folosiţi doar 5 biţi pt.memorarea indicatorilor de stare:

PSW:

Z: indicator de stare de zero;

C: indicator de stare de transport(carry);

S: indicator de stare de semn;

P: indicator de stare de paritate;

AC: indicator de stare de transport auxiliar.

25

A PSW

B C

D E

H L

SP

PC

RI

8 biti

16 biti

8 biti 8 biti

AC P S C Z

ARHITECTURA CALCULATOARELOR – Stiva

Registre la microprocesorul I8080

Perechea de registre HL: numărător de date (DC-Data Counter);

Se foloseşte mecanismul adresării indirecte;

Perechea HL poate conţine un grup de 16 biţi care desemnează o adresă de memorie;

La acea locaţie se află o dată şi nu o instrucţiune;

În acest fel se asigură transferuri de date între memorie şi procesor.

26

A PSW

B C

D E

H L

SP

PC

RI

8 biti

16 biti

8 biti 8 biti

ARHITECTURA CALCULATOARELOR – Stiva

Registre la microprocesorul I8080

Fiecare pereche de registre se identifică printr-o adresă de 2 biţi;

RI: registru de instrucţiuni de 8 biţi în care se încarcă OPCODE-ulinstrucţiunii curente.

27

A PSW

B C

D E

H L

SP

PC

RI

8 biti

16 biti

8 biti 8 biti

Pereche de registre Combinație de biți

APSW 11

BC 00

DE 01

HL 10

ARHITECTURA CALCULATOARELOR – Stiva

Stiva la microprocesorul I8080

Tip software;

Cu umplere în jos;

Baza se află la adresa cea mai mare;

SP: 16 biţi;

Incrementarea sau decrementarea SP-ului se face în modautomat sub controlul UC;

Stiva va fi definită acolo unde se află memoria de date(RAM) care permite efectuarea ambelor operaţii: citire şiscriere;

Dimensiunea stivei: 256 de locaţii.

28

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea PUSH

Instrucţiune pe un octet, în interiorul căruia se specifică opereche de registre;

În cod maşină această instrucţiune este: 11XX0101;

XX specifică perechea de registre după regula:

Instrucţiunea asigură: transferarea unui cuvânt de 16 biţi(2 octeţi) dintr-o pereche de registre specificată devaloarea XX în stivă, în două locaţii consecutive;

SP se decrementează cu 2, deci după executareainstrucţiunii valoarea SP-ului va fi (SP) - 2.

29

Pereche de registre Combinație de biți

APSW 11

BC 00

DE 01

HL 10

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea PUSH

30

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea PUSH

Paşii de execuţie sunt:

1. Se citeşte PC-ul şi se adresează locaţia de memorie deprogram (ROM) de la adresa pppp;

2. Se citeşte memoria ROM la adresa pppp de unde seextrage instrucţiunea curentă (11000101) care se aduceîn registrul de instrucţiuni (RI);

3. Se decodifică instrucţiunea (OPCODE-ul). Se stabileşte căeste o instrucţiune PUSH şi că data pe 16 biţi dinperechea de registre BC se depune în stivă;

4. Se incrementează PC-ul pentru a indica locaţiaurmătoarei instrucţiuni;

5. Se decrementează SP-ul;

31

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea PUSH

6. Se citeşte conţinutul SP-ului şi se adresează memoria dedate (stiva);

7. Se citeşte conţinutul registrului B (octetul cel maisemnificativ al datei de 16 biţi) care se transferă în vârfulstivei;

8. Se decrementează SP-ul pentru a indica următoarealocaţie din stivă în care se va transfera următorul octet aldatei;

9. Se citeşte conţinutul SP-ului şi se adresează memoria dedate (stiva);

10.Se citeşte conţinutul registrului C (octetul cel mai puţinsemnificativ al datei de 16 biţi) care se transferă în vârfulstivei.

32

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea PUSH

Conţinutul registrelor şi al memoriei RAM după executareainstrucţiunii PUSH este următorul:

33

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea POP

Instrucţiune pe un octet în interiorul căruia se specifică opereche de registre;

În cod maşină această instrucţiune este: 11XX0001;

XX specifică perechea de registre după regula:

Instrucţiunea asigură: extragerea din stivă a unui cuvântde 16 biţi (2 octeţi) pe care îi depune în perechea deregistre specificată de XX;

Fiind o stivă cu umplere în jos SP va fi incrementat cu 2,deci valoarea SP-ului va fi (SP)+2.

34

Pereche de registre Combinație de biți

APSW 11

BC 00

DE 01

HL 10

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea POP

35

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea POP

Paşii de execuţie sunt:

1. Se citeşte PC-ul şi se adresează locaţia de memorie deprogram (ROM) de la adresa pppp;

2. Se citeşte memoria ROM la adresa pppp de unde seextrage instrucţiunea curentă (11000001) care se aduceîn registrul de instrucţiuni RI.

3. Se decodifică instrucţiunea (OPCODE-ul). Se stabileşte căeste o instrucţiune POP şi ca data pe 16 biţi extrasă dinstivă se depune în perechea de registre BC;

4. Se incrementează PC-ul pentru a indica locaţiaurmătoarei instrucţiuni;

5. Se citeşte conţinutul SP-ului şi se adresează memoria dedate (stiva);

36

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea POP

6. Se citeşte memoria RAM la adresa ssss de unde seextrage un octet (octetul cel mai puţin semnificativ aldatei de 16 biţi) care se depune în registrul C;

7. Se incrementează SP-ul pentru a indica octetul următorde citit din stivă;

8. Se citeşte conţinutul SP-ului şi se adresează memoria dedate (stiva);

9. Se citeşte memoria RAM la adresa ssss + 1 de unde seextrage un octet (octetul cel mai semnificativ al datei de16 biţi) care se depune în registrul B;

10.Se incrementează SP-ul pentru a indica corect vârfulactual al stivei.

37

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea POP

Conţinutul registrelor după executarea instrucţiunii POPeste următorul:

38

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea LXI

Nu este propriu-zis o instrucţiune specifică pentru stivă;

Ea este o variantă a instrucţiunii LOAD;

Instrucţiunea LXI este pe 3 octeţi:

– primul este OPCODE-ul;

– următorii 2 octeţi specifică valoarea efectivă (data imediată)ce se încarcă în perechea de registre desemnată de câmpulde OPCODE.

În cod maşină câmpul de OPCODE este: 00XX0001;

XX specifică perechea de registre după regula: 00-B,C;01-D,E; 10-H,L; 11-SP;

Pentru a iniţializa SP cu o valoare prestabilită se vaexecuta instrucţiunea "LXI SP data imediată".

39

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea LXI

40

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea LXI

Paşii de execuţie sunt:

1. Se citeşte PC-ul şi se adresează locaţia de memorie deprogram (ROM) de la adresa pppp;

2. Se citeşte memoria ROM la adresa pppp de unde seextrage instrucţiunea curentă (00110001) care se aduceîn registrul de instrucţiuni RI;

3. Se decodifică instrucţiunea (OPCODE-ul). Se stabileşte căeste o instrucţiune pe 3 octeţi, LXI şi data imediată pe 16biţi din instrucţiune se transferă în SP;

4. Se incrementează PC-ul; acesta inidică acum adresapppp+1;

5. Se citeşte PC-ul şi se adresează locaţia de memorie deprogram (ROM) de la adresa pppp + 1;

41

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea LXI

6. Se citeşte memoria ROM la adresa pppp + 1 de unde seextrage octetul cel mai puţin semnificativ al dateiimediate care se transferă în octetul cel mai puţinsemnificativ al SP-ului;

7. Se incrementează PC-ul;

8. Se citeşte PC-ul şi se adresează locaţia de memorie deprogram (ROM) de la adresa pppp + 2;

9. Se citeşte memoria ROM la adresa pppp + 2 de unde seextrage octetul cel mai semnificativ al datei imediate carese transferă în octetul cel mai semnificativ al SP-ului;

10.Se incrementează PC-ul.

42

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiunea LXI

Conţinutul registrelor după executarea instrucţiunii LXIeste următorul:

43

ARHITECTURA CALCULATOARELOR – Stiva

Utilizarea stivelor la apelul de proceduri

44

ARHITECTURA CALCULATOARELOR – Stiva

Utilizarea stivei

Stivele se folosesc:

– În calculatoarele tip stivă (stack computers);

– asigură efectuarea operaţiilor aritmetice utilizând notaţia

poloneză inversă (postfix).

– La tratarea întreruperilor;

– pentru deservirea unei cereri de întrerupere se opreşte execuţia

programului principal şi se sare la programul de servire al

întreruperii;

– înaintea saltului trebuie salvată adresa de revenire în programul

principal.

– La apelul de proceduri;

– dacă în timpul execuţiei unui program se apelează o procedură

(subrutină), atunci se întrerupe execuţia programului principal

şi se sare la începutul procedurii apelate;

– apelul se realizează printr-o procedură de tip CALL.

45

ARHITECTURA CALCULATOARELOR – Stiva

Utilizarea stivei

Procedura: variabile locale;

Instrucţiunea CALL: lansarea procedurii în execuție +specificarea valorii variabilelor locale;

Procedura se execută până la întâlnirea instrucţiuniiRETURN; atunci se revine în programul principal;

La terminarea execuţiei une proceduri se revine înprogramul apelant => este necesară memorareacontextului programului apelant;

Context: cel puţin adresa de revenire, dar se recomandăşi salvarea cuvântului de stare al programului, eventual şialte registre;

Cadru (frame): ansamblul locaţiilor din stivă aferenteunei instrucţiuni CALL.

46

ARHITECTURA CALCULATOARELOR – Stiva

Exemplu

Fie:

– un program principal: PP;

– două proceduri P1 şi P2;

– procedura P1, defintă cu 2 variabile x și y;

– procedura P2, definită cu 3 variabile m, n și p.

47

ARHITECTURA CALCULATOARELOR – Stiva

Exemplu

48

PROGRAMUL PRINCIPAL PROCEDURA P1 (x,y) PROCEDURA P2 (m,n,p)

(1)

APP

PSW1

(3)

PSW3

(2) CALL P1(5,9)

AP1

(5)

AP2

ARP2

(4) CALL P2(2,.7,4)

(6) RETURN

AP11

ARP1

(9)(7) RETURN

(8) CALL P1(1,2)

(10) RETURN

APP1

PSW2

APP2

ARP1'

ARHITECTURA CALCULATOARELOR – Stiva

Exemplu

APP – adresa de start a programului principal;

AP1 – adresa de start a procedurii P1;

AP2 – adresa de start a procedurii P2;

PSW1 – cuvântul de stare al programului principal ce trebuiesalvat pe stivă atunci când se face salt la procedura P1;

APP1 – adresa de retur după apelul procedurii P1;

PSW3 – cuvântul de stare al procedurii P1 ce trebuie salvatpe stivă atunci când se face salt la procedura P2;

AP11 – adresa de retur după apelul procedurii P2 din P1;

ARP2 – adresa unde se apelează RETURN în procedura P2;

ARP1 – adresa unde se apelează prima dată RETURN înprocedura P1.

49

ARHITECTURA CALCULATOARELOR – Stiva

Exemplu

PSW2 – cuvântul de stare al programului principal ce trebuiesalvat pe stivă atunci când se face salt a doua dată laprocedura P1;

APP2 – adresa de retur după apelul procedurii P1 pentru adoua dată;

ARP1’ – adresa unde se apelează a doua dată RETURN înprocedura P1.

50

ARHITECTURA CALCULATOARELOR – Stiva

Exemplu

Procedura P1 are două variabile notate x şi y;

Când se apelează procedura P1 se plasează în stivă, încadrul frame-ului, şi cele două valori x și y;

Acestea se depun în partea superioară a stivei, deasupraadresei de revenire şi a cuvântului de stare, deoareceprimele operaţii la execuţia procedurii, presupune operaţiiPOP pentru preluarea din vârful stivei a valorilor efectivepentru variabilele locale;

În procedura P1 apare un apel către procedura P2 careare 3 variabile m, n, p;

La terminarea execuţiei procedurii P2 se executăinstrucţiunea RETURN şi se revine la procedula apelantăP1 la adresa AP11.

51

ARHITECTURA CALCULATOARELOR – Stiva

Exemplu

Procedura P1 are două variabile notate x şi y;

Când se apelează procedura P1 se plasează în stivă, încadrul frame-ului, şi cele două valori x și y;

Acestea se depun în partea superioară a stivei, deasupraadresei de revenire şi a cuvântului de stare, deoareceprimele operaţii la execuţia procedurii, presupune operaţiiPOP pentru preluarea din vârful stivei a valorilor efectivepentru variabilele locale;

În procedura P1 apare un apel către procedura P2 careare 3 variabile m, n, p;

La terminarea execuţiei procedurii P2 se executăinstrucţiunea RETURN şi se revine la procedula apelantăP1 la adresa AP11.

52

ARHITECTURA CALCULATOARELOR – Stiva

Exemplu

53

PROGRAMUL PRINCIPAL PROCEDURA P1 (x,y) PROCEDURA P2 (m,n,p)

(1)

APP

PSW1

(3)

PSW3

(2) CALL P1(5,9)

AP1

(5)

AP2

ARP2

(4) CALL P2(2,.7,4)

(6) RETURN

AP11

ARP1

(9)(7) RETURN

(8) CALL P1(1,2)

(10) RETURN

APP1

PSW2

APP2

ARP1'

ARHITECTURA CALCULATOARELOR – Stiva

Evoluţia stivei: la fiecare CALL se depune un frame înstivă, iar la fiecare RETURN se extrage un frame.

Exemplu

54

ARHITECTURA CALCULATOARELOR – Stiva

Evoluţia stivei: la fiecare CALL se depune un frame înstivă, iar la fiecare RETURN se extrage un frame.

Exemplu

55

ARHITECTURA CALCULATOARELOR – Stiva

Evoluţia stivei: la fiecare CALL se depune un frame înstivă, iar la fiecare RETURN se extrage un frame.

Exemplu

56

ARHITECTURA CALCULATOARELOR – Stiva

Instrucţiuni pentru apelul de proceduri la microprocesorul I8080

57

ARHITECTURA CALCULATOARELOR – Stiva

Asigură transferul conţinutului PC în stivă;

Apoi, încarcă PC-ului cu valoarea specificată îninstrucţiune (adresa de salt);

Instrucţiunea CALL este pe 3 octeţi: primul esteOPCODE-ul, iar următorii 2 octeţi specifică adresa de salt;

În cod maşină câmpul de OPCODE este: 11001101;

În stivă se memorează adresa de retur, deci la valoareacurentă a PC-ului se va adăuga 3.

58

Instrucţiunea CALL

ARHITECTURA CALCULATOARELOR – Stiva 59

Instrucţiunea CALL

ARHITECTURA CALCULATOARELOR – Stiva

Paşii de execuţie sunt:

1. Se citeşte PC-ul şi se adresează locaţia de memorie deprogram (ROM) de la adresa pppp;

2. Se citeşte memoria ROM la adresa pppp de unde seextrage instrucţiunea curentă (11001101) care se aduceîn registrul de instrucţiuni RI;

3. Se decodifică instrucţiunea (OPCODE-ul); se stabileşte căeste o instrucţiune pe 3 octeţi, CALL, şi că data imediatăpe 16 biţi din instrucţiune reprezintă adresa de salt;

4. Se incrementează PC-ul;

5. Se citeşte PC-ul şi se adresează locaţia de memorie deprogram (ROM) de la adresa pppp + 1.

60

Instrucţiunea CALL

ARHITECTURA CALCULATOARELOR – Stiva

6. Se citeşte memoria ROM la adresa pppp + 1 de unde seextrage octetul inferior al adresei de salt care se transferăîn procesor în octetul inferior al unui registru tampon de16 biţi;

7. Se incrementează PC-ul;

8. Se citeşte PC-ul şi se adresează locaţia de memorie deprogram (ROM) de la adresa pppp + 2;

9. Se citeşte memoria ROM la adresa pppp + 2 de unde seextrage octetul superior al adresei de salt care setransferă în procesor în octetul superior al registruluitampon de 16 biţi;

10.Se incrementează PC-ul;

11.Se decrementează SP;

61

Instrucţiunea CALL

ARHITECTURA CALCULATOARELOR – Stiva

12.Se adresează memoria de data (stiva) la adresa indicatăde SP (ssss - 1);

13.Se transferă în stivă la adresa ssss - 1 octetul superior alPC-ului în vederea memorării adresei de retur;

14.Se decrementează SP;

15.Se adresează memoria de data (stiva) la adresa indicatăde SP (ssss - 2);

16.Se transferă în stivă la adresa ssss - 2 octetul inferior alPC-ului în vederea memorării adresei de retur;

17.Adresa de salt (vvtt) memorată în registrul tampon setransferă în PC; deci, la următorul pas se va face FETCHde la adresa vvtt.

62

Instrucţiunea CALL

ARHITECTURA CALCULATOARELOR – Stiva 63

Instrucţiunea CALL

Conţinutul registrelor și al memoriei RAM după executareainstrucţiunii CALL este următorul:

ARHITECTURA CALCULATOARELOR – Stiva

Asigură revenirea din rutină;

Este o instrucţiune pe un singur octet;

În limbaj cod maşină instrucţiunea RET are următorulOPCODE: 11001001;

Este o combinaţie între o instrucţiune POP şi una JUMP;

Se citesc 2 octeţi din vârful stivei care se înscriu în PC;

Adresarea stivei se face cu SP-ul;

Se pierde vechiul conţinut al PC-ului care nu mai estenecesar;

Conţinutul SP-ului creşte cu 2.

64

Instrucţiunea RETURN

ARHITECTURA CALCULATOARELOR – Stiva 65

Instrucţiunea RETURN

ARHITECTURA CALCULATOARELOR – Stiva

Paşii de execuţie sunt:

1. Se citeşte PC-ul şi se adresează locaţia de memorie deprogram (ROM) de la adresa pppp;

2. Se citeşte memoria ROM la adresa pppp de unde seextrage instrucţiunea curentă (11001001) care se aduceîn registrul de instrucţiuni RI;

3. Se decodifică instrucţiunea (OPCODE-ul). Se stabileşte căeste o instrucţiune RET şi că data pe 16 biţi extrasă dinstivă se depune în PC;

4. Se incrementează PC-ul pentru a indica locaţiaurmătoarei instrucţiuni;

5. Se citeşte conţinutul SP-ului şi se adresează memoria dedate (stiva).

66

Instrucţiunea RETURN

ARHITECTURA CALCULATOARELOR – Stiva

6. Se citeşte memoria RAM la adresa ssss de unde seextrage un octet (octetul cel mai puţin semnificativ aldatei de 16 biţi) care se depune în octetul inferior alregistrului PC;

7. Se incrementează SP-ul pentru a indica octetul următorde citit din stivă;

8. Se citeşte conţinutul SP-ului si se adresează memoria dedate (stiva);

9. Se citeşte memoria RAM la adresa ssss + 1 de unde seextrage un octet (octetul cel mai semnificativ al datei de16 biţi) care se depune în octetul superior al registruluiPC;

10.Se incrementează SP-ul pentru a indica corect vârfulactual al stivei.

67

Instrucţiunea RETURN

ARHITECTURA CALCULATOARELOR – Stiva

Conţinutul registrelor după executarea instrucţiuniiRETURN este următorul:

68

Instrucţiunea RETURN