steaguri înregistrează, osdev wiki, fandomului powered by Wikia

istoria juridică

steaguri înregistrare a fost în primul 16-bit microprocesor Intel - 8086. El a purtat numele STEAGURI și a avut o lungime de 16 biți. Apariția microprocesorului în 80286 PAVILIOANELE adăugat înregistra biți și câmp de biți NT IOPL, cu toate acestea se va înregistra în rămas 16 biți.

Cu microprocesor 80386 registru a fost extins la 32 de biți, și a fost numit EFLAGS. În ea au existat doi biți suplimentare: VM și RF. În generațiile ulterioare de biți microprocesoare AC pe 32 de biți au fost adăugate, VIF, VIP și ID-ul. Cu toate acestea, păstrează compatibilitate deplină „bottom-up“: orice program vechi, care a funcționat corect cu EFLAGS înregistrați, fără a modifica „necunoscut“, ea a rămas Bits procesoare și funcționale ulterioare.

procesoare de extensie de biți și 64 de biți produse inițial de AMD (tehnologia AMD64) și mai târziu a copiat Intel (EM64T), dublat și de mărimea steaguri înregistrare, numit RFLAGS. Cu toate acestea, o jumătate superioară (biți de la 32-lea la 63 minute inclusiv) în timp ce nu este folosit și este rezervat, astfel încât formatul „semnificativ“ parte RFLAGS coincide cu formatul EFLAGS.

Numirea descarcă Editare

EFLAGS înregistrare Formatul este după cum urmează:

Rețineți că toți biții neutilizate sunt zero. O excepție este bitul 1, care are întotdeauna o singură valoare.

În continuare, în funcție de fiecare bit incluse într-un registru de pavilion.

steaguri de stat Editare

Aceste steaguri reflectă rezultatul obținut în operațiile anterioare aritmetice-logice. Multe dintre ele pot fi folosite în viitor pentru a efectua sucursale condiționate sau transferuri condiționate.

Steaguri ale acestui grup pot fi modificate folosind orice comenzi de program, ridicând un steag înregistrare nouă valoare (SAHF. POPF / POPFD / POPFQ).

pavilion de transport (bit 0). De fapt, el are un scop diferit, în funcție de instrucțiunea executabil. În operații aritmetice pe numere întregi acest steag, când este setat, indică prezența unui împrumut sau de transfer (acest lucru poate fi privit ca „overflow nesemnat“) și fiind sbroshennm - niciun transfer sau împrumut. În plus, acest indicator este folosit în anumite alte instrucțiuni și un fel descrie rezultatul. Detaliu utilizarea pavilion în fiecare instrucțiune este indicată în descrierea

pavilion paritate (bit 2). Setați dacă rezultatul baitul cel mai puțin semnificativ conține un număr par de biți de date, în caz contrar acesta este resetat

pavilion transporta auxiliar (bit 4). Setați atunci când un împrumut sau de transfer al 4-lea razzryada în a treia categorie. Șters în absența acestora. Utilizați corecția de comandă zecimală.

zero, pavilion (bit 6). Setați atunci când primesc rezultatul zero este resetat în alt mod.

pavilion semn (bit 7). Este setat dacă rezultatul operației obținut printr-un număr negativ, adică, în cazul în care cel mai semnificativ bit al rezultatului este egal cu unitatea. În caz contrar, resetare

un pavilion de preaplin (11 biți). Setați dacă rezultatul unei operații aritmetice a înregistrat o depășire de reper, care este, în cazul în care rezultatul este considerat ca un număr semnat, nu este plasat în operand-receptor. Dacă nu există nici un semn de preaplin, steagul este resetat

instrucțiuni de ghidare Flag Editare

Acest pavilion poate fi modificat orice programe folosind instrucțiuni CLD speciale și STD. și încărcarea unui nou pavilion registru de conținut.

Sistemul de pavilion

Aceste steaguri pot fi modificate numai de către software-ul sistemului rulează la (cea mai mare) nivelul de zero privilegiu actual (CPL). IF este un pavilion excepție, starea care în anumite condiții pot varia cod mai puțin privilegiate. Descarcă steaguri înregistrează programe nu rulează la nivelul zero, de privilegii, nu se schimba valorile steagurile de sistem.

pavilion trap (8 biți). Cand este setat, determină o #DB întrerupere (vector 1), după executarea fiecare instrucțiune procesor cu excepția faptului că este efectuat setarea acestui flag

Întrerupe permite pavilion (9 biți). Cand este setat, procesorul procesează cererile de întrerupere Maskable sunt primite de către un controler de întrerupere sau un controler de întrerupere îmbunătățit. Când eliminate, întreruperea procesor Maskable este ignorat (sunt în curs de procesare). Capacitatea de a seta și a reseta indicatorul, dacă programele care nu rulează la nivelul zero, de privilegii. IOPL rula pe teren și biți steaguri registru VE Registrul de control CR3 (Can bit VME CR4 înregistrare?)

Nivelul câmpului I / O privilegiu (biții 12 și 13). Acesta conține privilegii IO nivel pentru programul de executare în prezent. Dacă nivelul actual de privilegiu (CPL) programul numeric mai mică sau egală cu valoarea în câmpul IOPL, programul poate utiliza instrucțiunile de intrare-ieșire și de a schimba starea de pavilion IF. câmp IOPL carte completate IO permisiunea TSS. și bit VME în Registrul de control CR4

O sarcină cuibărit (14 biți). Acest flag este setat automat atunci când procesorul este trecut la noua sarcină. Trecerea la problema apare atunci când îl utilizați ca un handler de întrerupere, prin poarta de acces a problemei în IDT sau comanda de apel CALL, adresat problema TSS sau gateway. situat în GDT sau LDT

pavilion reluare (16 biți). răspuns procesor de control la breakpoint. Cand este setat, dezactivează generarea de întrerupere de depanare (#DB). Funcția principală a pavilion RF este de a asigura re-executarea instrucțiunii după apariția întreruperii de depanare cauzate de un punct de întrerupere. Pentru a face acest lucru, debugger înainte de a reveni la programul întrerupt trebuie să setați acest bit în pavilioanele înregistra program întrerupt salvat în stivă, care va asigura executarea normală a instrucțiunii la care va exista o revenire din debugger. După ei, procesorul se va reseta automat de pavilion RF, care va asigura buna funcționare a seta puncte de întrerupere

Modul procesor virtual 8086 (17 biți). Atunci când acest indicator este setat, procesorul este în modul virtual, procesorul 8086

Aliniere Verificare (18 biți). Atunci când acest indicator este setat simultan și AC bit registru de control CR0. iar programul este executat pe al treilea nivel de privilegii. activat verificare aliniere operanzi localizat în memorie. Când încercați să accesați o excepție operand nealiniate apare #AC (vector 17)

întrerupere virtuală permite pavilion (bit 19). Acest flag este utilizat în conjuncție cu un VIP de pavilion, în Registrul de control CR4 bit setat VME, permițând utilizarea unei virtuale 8086 extensii modul

În așteptarea întrerupere virtuale (bit 20). Acest flag este utilizat în conjuncție cu steagul VIF în Registrul de control CR4 biți set VME, permițând utilizarea unei virtuale 8086 extensii modul

Identificare (21 biți). Capacitatea de software pentru a seta și a reseta steagul este un indiciu că procesorul acceptă instrucțiuni CPUID în

Aceasta a constatat utilizarea extensiei AdBlock.

articole similare