Vorbind de registre

intrare

Registrele fac parte integrantă din procesor. Ele sunt folosite pentru stocarea temporară a informațiilor. Utilizarea intensivă a registrelor în program este determinată de viteza de acces la mult mai mult decât celulele de memorie. Procesoarele pe 32 de biți au 16 registre. Noi considerăm doar de bază și cel mai frecvent utilizate sunt: ​​registre de uz general, indicatorul de instrucțiuni, registre segment și steaguri registru.







Scopuri generale

Deși puteți utiliza oricare dintre registrele de mai sus pentru a stoca operanzi, rezultate de operare și indicatori, fiți atenți la registrul esp. Se stochează partea superioară a indicatorului de stivă și modificarea incorectă a acestei valori va conduce la funcționarea incorectă a programului și la căderea acestuia.

Multe echipe folosesc registre specifice pentru a-și păstra operanzii. De exemplu, comenzile de procesare a șirului de text utilizează conținutul regiștrilor ecx, esi și edi drept operanzi.

Principalele cazuri de utilizare a registrelor cu scop general sunt:
  • eax - utilizat pentru a stoca operanții și rezultatele operațiilor
  • ebx - ca un pointer la datele din segmentul ds
  • ecx - ca un contor pentru operațiunile de șir și bucle
  • edx - pointer la intrare / ieșire
  • esi - un pointer la datele din segmentul DS, precum și un pointer la sursa a echipelor de lucru cu siruri de caractere
  • SED - pointer la segmentul de date în es, precum și un pointer la comenzile în receptor cu rândurile de muncă
  • esp - partea superioară a indicatorului de stivă din segmentul ss
  • ebp - indică unele date din stack






În registrele care se termină în x, se pot referi la cei 16 biți inferiori (ax, bx, cx și respectiv dx), care la rândul lor pot fi împărțiți în octetul înalt (ah, bh, ch și dh) și cel minor (al, bl , cl și dl) și să lucrăm cu ele, ca și în cazul registrelor de lungime de 8 biți. Pointers esp (pointerul de sus al stiva) și ebp (registrul de bază), precum și indicele registru esi (indexul sursă) și edi (indexul receptorului) permit doar adresarea pe 32 de biți.

Segmente de registru

Segmentele de registru (cs, ds, ss, es, fs și gs) stochează descriptorii de segment pe 16 biți. Segmentatorii descriptori sunt indicatori specifici care determină localizarea unui segment în memorie. În modul protejat al procesorului (Windows 95/98), toate registrele segmentului indică același segment, astfel că acestea nu sunt de obicei utilizate în program.

Registrul de steaguri

Și, în sfârșit, registrul steagurilor. Vom vorbi mai mult despre asta. Acest registru este un set de steaguri care sunt setate sau resetate prin rezultatele comenzilor care sunt executate.

Sper că, dragi prieteni, știți că drapelul este o variabilă de 1 biți folosită în comenzile de salt condiționat. Dacă valoarea acestei variabile este 1, atunci se consideră că pavilionul este setat, dacă valoarea 0 este resetată. În primul rând, suntem interesați de: steagul zero, steagul de transportare și steagul semnului.
  • zero, flag (zf) este setat în cazul zero rezultate atunci când următoarea instrucțiune, și este resetat când valorile nenule rămase.
  • Flagul de transfer (cf) este setat când cel mai semnificativ bit este transferat sau împrumutat în operații aritmetice, altfel este resetat.
  • Steagul de depășire (de) este setat dacă rezultatul operației aritmetice nu se încadrează în operandul de destinație.
  • Marcajul semn (sf) este setat la o singură valoare a celui mai vechi bit al rezultatului - un semn al unui număr negativ.






Articole similare

Trimiteți-le prietenilor: