Upload
trinhdien
View
234
Download
2
Embed Size (px)
Citation preview
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