< Ontwerp en bouw een besturingssysteem < Werking van de PC

Elke processor heeft een aantal zogenaamde registers om argumenten en resultaten van berekeningen tijdelijk in op te slaan. Deze registers zijn veel sneller dan het werkgeheugen, of de caches.

Algemene registers

De algemene registers (General Purpose-Registers (of GPR) in het Engels) staan in onderstaande tabel. Merk op dat er van een aantal registers meerdere 'varianten' zijn, die verwijzen naar dezelfde registergeheugenplaats.

16-bit 32-bit 64-bit Omschrijving
AX EAX RAX Accumulatorregister, gebruikt voor de meeste berekeningen.
DX EDX RDX Dataregister, wordt gebruikt voor argumenten voor berekeningen, en als uitbreiding van het accumulatorregister.
CX ECX RCX Teller register (counter in het Engels), wordt gebruikt bij loops en jumps.
BX EBX RBX Basisregister, kan als extra register gebruikt worden.
DI EDI RDI Destinatie index register, wordt gebruikt bij string operaties.
SI ESI RSI Bron index register (source index in het Engels), wordt gebruikt bij string operaties.
SP ESP RSP Stack pointer, wijst naar de top van de stack.
BP EBP RBP Stack base pointer, wijst naar het begin van de stack.
IP EIP RIP Instructie pointer, houdt de programmateller (het adres van de huidige instructie) bij.
- - R8...R15 De 64 bit variant, voegt 8 general purpose 64 bit registers toe genaamd R8, R9, ... R15


Visueel zit dit er, voor de algemene registers (?AX, ?BX, ?CX, ?DX) uit zoals in onderstaande tabel:

64 56 48 40 32 24 16 8
R?X
E?X
?X
?H ?L

Bemerk dat de individuele bytes van de 16-bits registervarianten (AX, BX, CX en DX) te bereiken zijn via ?H en ?L

Statusregister

Een processor bevat naast een aantal algemene registers ook een statusregister, welke aangeeft in welke status de processor zich bevindt. Dit register bestaat eveneens in 16, 32 en 64 bit varianten genaamd FLAGS, EFLAGS en RFLAGS. Dit register heeft de volgende layout:

Intel x86 FLAGS Register
Bit #AfkortingBeschrijvingCategorie
FLAGS
0CFCarry flagStatus flag
11Gereserveerd 
2PFParity flagStatus flag
30Gereserveerd 
4AFAdjust flagStatus flag
50Gereserveerd 
6ZFZero flagStatus flag
7SFSign flagStatus flag
8TPTrap flag (single step)System flag
9IFInterrupt enable flagSystem flag
10DFDirection flagControl flag
11OFOverflow flagStatus flag
12, 13IOPLI/O privilege level (vanaf 286)System flag
14NTNested task flag (vanaf 286)System flag
150Gereserveerd 
EFLAGS
16RFResume flag (vanaf 386)System flag
17VMVirtual-8086 mode flag (vanaf 386)System flag
18ACAlignment check (vanaf 486SX)System flag
19VIFVirtual interrupt flag (Pentium+)System flag
20VIPVirtual interrupt pending (Pentium+)System flag
21IDIdentification (Pentium+)System flag
220Gereserveerd 
230Gereserveerd 
240Gereserveerd 
250Gereserveerd 
260Gereserveerd 
270Gereserveerd 
280Gereserveerd 
290Gereserveerd 
300Gereserveerd 
310Reserved 
RFLAGS
32-630Gereserveerd 

Wanneer de voorgaande operatie een overflow tot gevolg had dan zal in dit register de carry-vlag hoog gezet worden. Ook kan hieruit geleerd worden in welke status de processor zich bevindt.

This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.