Documente Academic
Documente Profesional
Documente Cultură
Modelul de programare
Modelul de programare
Modelul de programare
Extensii 64-biti
(Pentium 4 si Core2)
RAX
RBX
RCX
RDX
RSP
RBP
RDI
RSI
RIP
RFLAGS
R8
R9
R10
R11
R12
R13
R14
R15
Registre de uz general
Registre de uz general
RAX,
EAX: Accumulator:
Se foloseste ca 64-biti RAX, 32- biti (EAX), 16 biti (AX) sau 8-biti (AL sau AH).
Instructiuni: inmultire, impartire, alte operatii aritmetice sau logice.
EAX poate tine offset de memorie.
Registre de uz general
Registre de uz general
RBP, EBP: Base Pointer:
Pointer in adresarea array-urilor de date in stiva de memorie.
RBP, EBP, BP.
RDI, EDI: Destination Index:
Instructiuni cu string-uri adreseaza datele din string destinatie al
transferului.
RDI, EDI sau DI.
ESI: Source Index:
Instructiunile cu string-uri adreseaza datele din string sursa al
transferului.
RSI, ESI sau SI.
Registre de uz general
R8-R15:
Pentium 4 sau Core2 in cazul modului 64-bit.
Datele din aceste registre sunt adresate pe: 64-, 32-, 16-, or 8-bit.
Pentru octet se foloseste doar partea cea mai din dreapta a
registrului.
Registre de uz special
RIP, EIP: Instruction Pointer:
Arata urmatoarea instructiune din segmentul de cod.
16-bit (IP) in modul real si 32-bit in modul protejat.
Se poate modifica printr-o instructiune jump sau call.
In modul 64-bit contine o adresa pe 40-biti.
RSP, ESP: Stack Pointer:
Adreseaza stiva de memorie LIFO (last input first output).
La executia instructiunilor PUSH si POP;
La apelul de subrutina si revenirea din subrutina: CALL sau
RET .
SP 16 biti.
10
Registre de uz special
11
EFLAGS
12
EFLAGS
13
EFLAGS
14
EFLAGS
15
16
17
18
19
20
10
21
Registre de Segment
22
11
Registre de Segment
CS (Segment de Cod):
Segmentul de cod este o sectiune din
memorie care pastreaza programele si
procedurile folosite de acestea.
Acest registru defineste adresa de
inceput a sectiunii de memorie cu cod.
Mod real specifica inceputul unui
segment de 64KB.
Mod protejat selecteaza un descriptor
de segment ce include adresa de
inceput si lungimea sectiunii de
memorie cu cod.
Segmentul de cod este limitat la 64KB
pentru 8086-80286 si 4 GB pentru 386
si urmatoarele.
23
Registre de Segment
DS (Segment de Date):
Similar CS, cu exceptia ca acest
segment pastreaza date.
Datele sunt accesate in
segmentul de date prin:
Adresa de offset sau
Continutul altor registre
care au adresa de offset.
24
12
Registre de Segment
ES (Extra Segment):
Segment de date utilizat de unele
instructiuni pentru manipularea
string-urilor.
Este destinatia datelor.
25
Registre de Segment
SS (Stack Segment):
Similar CS, exceptie acest segment
pastreaza stiva.
Locatia intrarii curente in stiva este
stabilita de continutul registrului SP.
26
13
Registre de Segment
FS si GS:
Disponibile de la 80386 si
urmatoarele.
Registre segment suplimentare
pentru doua segmente de
memorie suplimentare care pot fi
accesate de programe.
27
28
14
29
Segment si Offset
30
15
31
32
16
Segment si Offset
33
Segment si Offset
34
17
Segment si Offset
35
Segment si Offset
Exemplu de memorie a sistemului cu 4 segmente
36
18
Segment si Offset
Exemplu sistem de memorie cu 4 segmente
Solutie: Calculul adresei de sfarsit pentru fiecare segment de
memorie.
37
19