Model de software pentru microprocesoare pe 32 de biți

Modelul software al procesorului este un set de registre interne de bază (Figura 3.5). Toate registrele de procesoare au propriul nume, ceea ce le permite să acceseze o comandă din program. Regiștrii procesoarelor sunt extinse la 32 de biți, după cum indică litera E în fața numelui înregistrării. Prin scop și metodă de utilizare, registrele pot fi împărțite în următoarele grupuri:







# 159; Registrele cu destinație generală (EAC, EHХ, EŠX, EȘH, ESI, EDI, EBP, ESP);

# 159; Segmente de registre (CS, DS, SS, ES, FS, GS);

# 159; Comanda pointer (EIP);

# 159; Înregistrați (sau indicatorul) de pavilioane (EF);

# 159; Regiștrii de control (CR0, CR1, CR2, CR3);

# 159; Registrele de depanare (DR0 ... DR7);

# 159; Registrele de încercare (TR3, TR4, TR5, TR6, TR7);

# 159; registrele specifice modelului (în funcție de modelul particular al procesorului).

Să descriem pe scurt compoziția și scopul acestor registre.

Scopuri generale

EAX (acumulator extins, baterie); EBX (bază extinsă, bază); ECL (contor extins, contor); EDX (date extinse, date); ESI (indice sursă extinsă, index sursă); EDI (Indice de destinație extins, index receptor); ESP (indicatorul de bază extins, indicatorul de bază); EBP (indicatorul stack extins, indicatorul stack).

Steaguri EFLAGS registru este, de asemenea, extins la 32 de biți Biți 0-15 definite pentru 8086 și 80286, sunt fostul scop, un număr de steaguri adăugate odată cu apariția procesoarelor și a 4-a 5-a generație. Steagurile de înregistrare sunt împărțite în trei grupe: - steaguri de sistem; - steaguri de state; - steaguri de control.

Atribuirea biților steagurilor sistemului din registrul EFLAGS este descrisă mai jos, atribuirea steagurilor de control și de stare este dată în MP 8086.

VIP (Virtual Interrupt Pending) - cerere de întrerupere virtuală (P5 +).

ID (Id Flag) - pavilionul disponibilității comenzii de identificare CPUID (P5 + și aproximativ 486).

AC (Verificarea alinierii) - steagul controlului alinierii.

VM (modul Virtual 8086) - în modul protejat include modul de procesare virtuală 8086.

RF (Resume Flag) - steagul Resume, folosit împreună cu registrele punctelor de întrerupere.

IOPL (Level Privilege de intrare / ieșire) - nivel de privilegii I / O.

NT (Nested Task Flag) - pavilionul sarcinii imbricate.

Registrele de control (control Registre) CRO, CR1, CR2, CR3 bit registre pe 32, stocate indicații de stare procesor (Figura 3.6) registru CRO asigură controlul global al modurilor de operare a procesorului.

Registrul CR1 nu este utilizat.

Registrul CR4 conține biți de permisiune pentru extensiile arhitecturale

31 16 12 1110 9 8 7 6 5 4 3 2 1 0

Figura 3.6 - Registrele de control ale procesorului

Registrele de depanare sunt destinate pentru setarea și controlul punctelor de întrerupere a depanării.

Înregistrează DR4, DR5 într-un procesor Pentium cu extensie de depanare activată, accesul la aceste registre determină excluderea unui cod de funcționare nevalid (#UD).

Registrul DR6 (Status Breakpoint) reflectă starea punctului de control.

Regiștrul DR7 (controlul punctului de control) controlează setarea punctelor de control.







TR3 - registru de date cache intern.

TR4 - registrul de stare a cache-ului de testare.

TR5 este registrul de control pentru testarea cache-ului.

TR6 este registrul pentru testul de stocare în cache a paginilor.

TR7 este registrul de date pentru testul de memorare a paginii.

Registrele specifice pentru modele MSR (Registre specifice modelului) sunt concepute pentru a gestiona extensiile de depanare, monitorizarea performanțelor, controlul mașinii, cachearea zonelor de memorie fizică și alte funcții. Scopul lor este legat de arhitectura unui procesor particular, compoziția variază de la model la model, accesul este privilegiat.

- număr displacement sau Disp 8, 16 sau 32 de biți inclus în comandă;

- baza (baza) - conținutul registrului de bază;

- Index - conținutul registrului index;

- Scala este multiplicatorul (1, 2, 4 sau 8) specificat în codul de instrucțiuni.

EA = baza + index × scară + disp

Pe lângă utilizarea evidentă a stivei instrucțiunilor PUSH și POP, stiva este utilizat în mod automat de către procesor atunci când instrucțiunea de apel (CALL), se întoarce (RET și IRET), procedurile de intrare și ieșire (ENTER și se lasă), și întrerupe de manipulare.

Prin întrerupere, valoarea registrului EFLAGS este, de asemenea, plasată pe stivă. Prin instrucțiunile de returnare, aceste valori sunt extrase din stivă în registrele corespunzătoare, iar procesorul continuă să execute secvența întreruptă a instrucțiunilor.

Stiva este utilizată în următoarele scopuri:

- organizarea întreruperilor, apelurilor și returnărilor;

- stocarea temporară a datelor, atunci când nu există niciun sens în alocarea locurilor fixe în memorie;

- transferarea și returnarea parametrilor în timpul procedurilor de apel.

Înainte de a utiliza stiva, trebuie să fie inițializată - valorile selectorului SS și indicatorul ESP trebuie să fie setate astfel încât să indice zona reală de memorie.

Întrerupe și excepții

Întreruperile și excepțiile încalcă cursul normal al executării programului pentru manipularea evenimentelor externe sau a comenzilor de întrerupere.

Întreruperile sunt împărțite în hardware, cauzate de semnalele electrice la intrările procesorului și software-ul executat de comanda INTxx.

Software-ul întrerupe, strict vorbind, nu sunt întreruperi, este doar un mod ciudat de a apela proceduri, dar acestea sunt tratate ca un tip de întreruperi de către procesor.

Întrerupe sau procesări de excepție ține registrul stivă (E) Drapele și indicatorul CS: (E) IP instrucțiunea care trebuie efectuată după întreruperea tratamentului. Această instrucțiune va fi următoarea pentru cea în care sa produs întreruperea. În modul protejat, dacă există mai multe excepții în stivă, este stocat și codul de eroare. După stocarea acestor valori, procesorul trece la executarea programului de procesare întrerupere (excludere) care definește un punct de intrare în ea printr-un număr (0-255) a mesei de întrerupere. Ultima comandă a handler de întrerupere ar trebui să fie de instrucțiuni IRET întoarcere, pe care indicatorul stivă este restaurat CS: (E) IP și steaguri valoarea precedentă. Astfel, procesorul execută următoarele acțiuni pe o comandă de întrerupere:

4. Dezactivează întreruperile externe, dacă: = 0;

7. Permite întreruperi externe, dacă: = 1;

8. Începe să efectueze ciclul de bază al procesorului.

Întreruperile hardware sunt efectuate prin același algoritm și sunt împărțite în măști și cele care nu pot fi mascate.

Întreruperile mascate se efectuează atunci când parametrul de permisiune este setat (IF = 1).

Întreruperile fără mascare se efectuează indiferent de starea semnalului IF prin semnalul NMI (Non-Mascable Interrupt). Procesarea acestuia nu poate fi întreruptă până când comanda IRET nu este executată.

Excepțiile sau cazurile speciale sunt subdivizate în eșecuri, capcane și opriri de urgență. Diferențele sunt valori stocate CS: (E) IP.

O eroare este o excepție care este detectată și întreținută înainte de executarea instrucțiunii care cauzează eroarea. După ce ați efectuat această excepție, controlul revine la aceeași instrucțiune (inclusiv toate prefixele) care au provocat eșecul.

O capcană este o excepție care este detectată și întreținută după executarea instrucțiunii care o numește. După ce ați efectuat această excepție, comanda revine la următoarea instrucțiune. Clasa de capcane include și întreruperi de software.

Abort este o excepție care nu vă permite să setați cu precizie instrucțiunea care a cauzat-o. Este folosit pentru a raporta o eroare gravă, cum ar fi o eroare hardware sau o corupție de tabelă de sistem.







Articole similare

Trimiteți-le prietenilor: