Sunteți pe pagina 1din 23

Limbaje de asamblare

Cap. 1 Concepte de baza


1.2 Stocarea si accesul la date.
1.3 Instructiuni in cod masina
1.4 Modelul ISA x86

1
Registre, memorii,
porturi de intrare/iesire
Entitati de stocare a datelor:
registre:
intim legate de UCP
adresate prin nume (ex: AX,BX, R0, R1, SP)
numar redus de registre (1..32)
timp de acces minim !!!
registre:
generale: folosite pt. operatii aritmetice si logice
speciale: au functii determinate (ex: control, stare, pt.
adresare, pt. testare, etc.)

2
Registre, memorii,
porturi de intrare/iesire
Memoria:
interna (principala, operativa):
memorie semiconductoare (EPROM/Flash, SRAM, DRAM)
permite acces aleator (citire/scriere) la nivel de locatie
(cuvant de date);
timp de acces mediu (15ns-70ns), relativ constant
capacitate medie (64ko-2Go)
UCP are acces direct la memoria interna prin intermediul
magistralei sistem
spatiu liniar de adresare locatiile sunt ordonate pe baza de
adresa
spatiul de memorie poate fi structurat pe segmente
la arhitecturile Harvard (ex: microcontroloare, procesoare de
semnal) memorie separata pentru program si pentru date (2
3
spatii de adresare separate)
Registre, memorii,
porturi de intrare/iesire
Memoria externa:
memorie pe suport magnetic (flopy-disck, hard-disck, banda
magnetica), suport optic (CD, DVD) sau semiconductor
(memorii nevolatile, Flash, smart-card, etc.)
accesul UCP la memoria externa se face prin intermediul unei
interfete specializate, conectata pe magistrala
timp de acces relativ mare (10ms-10s), variabil
capacitate f. mare (1Go-1To), teoretic infinita
acces aleatoriu la nivel de bloc (ex: sector) si secvential in
interiorul blocului; la banda magnetica accesul este doar
secvential
memorie structurata pe unitati fizice (ex: sectoare) si logice
(clustere, fisiere, directoare)
nu exista suport la nivelul L.A. pentru accesul la locatiile
memoriei externe; accesul se face prin rutine (drivere)
prefabricate din SO 4
Registre, memorii,
porturi de intrare/iesire
Ierarhii de memorii
memoria cache:
memorie f. rapida, de capacitate mica
transparenta (invizibila) pentru instructiunile L.A.
pastreaza copii ale locatiilor din memoria interna
structurata pe blocuri (linii cache)
memoria virtuala:
extensie a memoriei interne peste memoria externa
doua tehnici de implementare:
segmentarea
paginarea
memorie structurata pe pagini si segmente
controlul memoriei virtuale se face numai in regimuri
supervizor (modul protejat) 5
Registre, memorii,
porturi de intrare/iesire
Porturi de intrare/iesire:
registre continute in interfetele de intrare/iesire, prin care UCP
controleaza transferul de date
tipuri de porturi:
porturi de date: pentru transferul de date; pot fi de intrare,
de iesire sau bidirectionale
porturi de control: registre de iesire prin care se controleaza
functionarea interfetei si a dispozitivului legat la interfata
porturi de stare: registre de intrare prin care se poate testa
starea interfetei si a dispozitivului legat la interfata
accesul la porturi:
prin adresa si prin instructiuni dedicate (ex: IN, OUT); putine
instructiuni au acces direct la porturi de I/E
spatiu separat de adrese pentru memorie si pentru porturi de
I/E (exceptie: microcontroloarele)
6
Metode generice de acces la date
Metoda de acces: modalitatea de specificare (exprimare) a
locatiei instructiunii sau a operandului care urmeaza sa se acceseze
Metode de acces pentru instructiuni:
secventiala: se citeste instructiunea de la adresa urmatoare
PC=PC+lungimea_instructiunii_curente
ex: instructiuni aritmetice si logice
directa: se citeste instructiunea de la adresa specificata in
instructiunea curenta
PC= adresa_directa
ex: instructiuni de salt, apel de rutine
relativa: se citeste instructiunea de la o adresa relativa fata de
adresa curenta (deplasamentul poate fi pozitiv sau negativ)
PC= PC+deplasament
ex: instructiuni de salt, apel de rutine
indirecta: instructiunea curenta specifica adresa adresei
instructiunii urmatoare 7
Metode generice de acces la date
Metode de acces la date:
imediata: valoarea operandului este prezenta in codul instructiunii
ex: MOV AX, 1234H
directa: adresa operandului este specificata in codul instructiunii
ex: MOV AX, [1234H]
registru: operandul se afla intr-un registru intern al UCP
ex: MOV AX,BX
indirecta: instructiunea contine adresa adresei operandului
ex: MOV AX, [SI+1234H]
implicita: codul instructiunii implica utilizarea unui anumit
registru, adresa de memorie sau adresa de adresa de memorie
ex: PUSH AX ; implicit se foloseste SP ca registru de adresare
indexata: se acceseaza succesiv elementele unei structuri de date
de tip tablou
ex: MOV AX, [SI]
8
altele: bazata, relativa, stiva
Instructiuni in cod masina
formatul instructiunilor (lungime+continut):
varianta 1: fara operanzi in codul instructiunii
Cod operatie
operatia nu necesita operanzi sau operanzii sunt specificati implicit
prin codul de operatie
varianta 2: un singur camp de operand in codul instructiunii
Cod operatie Adresa/Data imed.
operatia este unara (un operand) sau al doilea operand este implicit
varianta 3: doua campuri de operanzi (sursa, destinatie)
Cod operatie Adresa operand 1 Adresa op.2/Data imed.
varianta4: trei campuri de operand (operand 1, operand 2,
rezultat)
Cod operatie Adresa operand 1 Adresa op.2/Data imed. Adresa rezultat
9
Executia instructiunilor
Faze de executie:
citire cod instructiune (instruction fatch IF)
decodificare instructiune (instruction decoding Dec)
citire operand (operanzi) (data fatch DF)
executie operatie (execution Ex)
scriere rezultat (write back WB)
Cicluri de transfer:
ciclu de citire instructiune
ciclu de citire operand (optional)
ciclu de scriere rezultat (optional)
=>durata unei instructiuni este determinata (in majoritatea cazurilor)
de numarul de cicluri care trebuie sa se execute
un ciclu = unu sau mai multe perioade de ceas
durata unei perioade de ceas= durata celei mai lungi cai in UCP
(suma intarzierilor produse in circ. combinationale care alcatuiesc 10
calea unui semnal)
Executia instructiunilor
Executie secventiala CPI=5
IF Dec DF Ex WB IF Dec DF Ex WB
Timp: T 2T 3T 4T 5T 6T 7T 8T 9T 10T

Instr. 1 Instr.2

Executie pipeline - CPI=5..1


Instr.1 IF Dec DF Ex WB
Instr.2 IF Dec DF Ex WB
Instr.3 IF Dec DF Ex WB
Instr.4 IF Dec DF Ex WB
Timp: T 2T 3T 4T 5T 6T 7T 8T
11
Arhitectura procesoarelor Intel x86
Procesor Structura/ Spatiu de Unitati de Tip executie Altele
Frecv. memorie prelucrare
8086/88 16 /5MHz 1Mo 2 biprocesor
80286 16/20MHz 16Mo 4 pipeline
80386 32/33MHz 4Go 6 pipeline mem. virt
80486 32/66MHz 4Go 8 pipeline mem.
cache
Pentium 32/100MHz 4Go 12 2 linii pipeline

Pentium 32/200MHz 4Go 12 superscalar MMX


Pro
Pentium 32/400MHz 4Go-64To 20 Superscalar, SIMD
II, III, IV 2GHz hyperthreading

Dual Core 64/2-3GHz 64To 2*12 Multi-core GPU


i7, i5, i3 4*12 ?
12
Modelul ISA x86 - Registre
Registre generale:
63 31 15 7 0
Accumulator RAX EAX AX
AH AL
Base index RBX EBX BX
BH BL
Counter RCX ECX CX
CH CL

Data RDX EDX DX


DH DL
Destination index RDI EDI DI
Source index RSI ESI SI
Base pointer RBP EBP BP
Stack pointer RSP ESP SP

General purpose registers 13


R8-R15
Modelul ISA x86 - Registre
Registre segment:
15 0 32 biti 20 biti 2 biti
CS Adresa segmentului Lungimea RPL
DS
SS
ES
FS
GS
Registre speciale:
31 16 15 0
PC EPC
Reg. stare (PSW) EPSW
14
Modelul ISA x86 Registre
PSW PSW extins
CF transport IOPL nivel de privilegiu I/E
PF paritate NT task imbricat
AF transport auxiliar RF continuare in caz eroare
ZF rezultat zero VM mod virtual 8086
SF semn AC verificare aliniere
TF trasare VIF intrerupere virtuala
IF validare intreruperi VIP validare intrerupere
mascabile virtuala
DF directia de transfer ID indicator
OF depasire capacitate
15
Modelul ISA x86 Moduri de lucru
Modul real modul de lucru 8086:
organizare pe 16 biti
spatiu maxim de memorie 1 Mo
resursele hardware sunt direct accesibile programului utilizator
Modul protejat: - mecanisme complexe de protectie a memoriei
registre pe 8, 16 si 32 biti
spatiu de adresare: 4Gocteti adrese pe 32 biti
asigura un management mai bun al memoriei
Modul Virtual 8086 simularea executiei modului real in modul
protejat
Modul long pe 64 biti : modul natural de lucru al procesoarelor pe
64 biti
organizare pe 64 biti (registre, memorie)
spatiu fizic de adresare: 1Toctet) adresa pe 40 biti
spatiu virtual de adresare 256 Tocteti adresa pe 48 biti

16
Modelul ISA x86 - Adresarea memoriei
modul real: Memoria
1M
15 0 15 0
Adr. segment Adr. offset

Adr. fizica
*16 +

Adr. segment 0
1 2 3 4 0
Consecinte:
5 6 7 8 Adr. offset
-lung. segment = 64Ko
1 7 9 B 8 Adr. fizica
-spatiu de memorie = 1Mo
-nu exista mec. de protectie
17
Modelul ISA x86 - Adresarea memoriei:
modul protejat:
Memoria
4G0
15 0 31 0
Selector Adr. offset
31 0
Adr. fizica
Adresa de segment +
Lungime
Acces 0
Descriptor de segment
Consecinte:
-spatiu de adresare = 4 Go -o mai buna protectie a segmentelor
-dim. segment = 1o .. 4Go -o utilizare mai eficienta a memoriei18
Modelul ISA x86-64 - Adresarea memoriei

Modul long
mod de lucru posibil doar pe procesoarele pe
64 biti; se lucreaza cu registre pe 64 biti
in acest mod nu se poate emula modul real (16
biti) sau virtual 8086
se pot executa programe pe 32 biti si 16 biti
protejat
adresarea memorie fizice pe 40 biti (1Toctet)
adresarea memoriei virtuale pe 48 biti
(256Tocteti)
19
Adresarea memoriei

calculul adresei fizice

Registru Registru Registru


segment :[ de baza + index
+ Deplasament ]

Adresa de segment Adresa de offset

20
Adresarea memoriei
calculul adresei fizice
La procesoare pe 16 biti

La procesoare pe 32 sau 64 biti

La procesoare pe 64 biti in modul long

21
Formatul instructiunilor x86

prefix cod operatie Reg/Mod sib deplasament data imediata

Formatul instr. x86 variabil ca lungime si continut


Semnificatia campurilor:
Prefix: unul sau mai multi octeti care preced instructiunea si
modifica modul de executie al acesteia
tipuri: segment explicit, dim. adresa (16/32 biti), dim.
operand (16/32 biti), repetare instr. , blocare acces (lock)
Cod operatie: 1..2 octeti, care codifica tipul de operatie
instr. setului de baza au codul operatiei pe 1 octet 22
Formatul instructiunilor x86
Reg/Mod : specifica registrele folosite si modul de adresare adoptat
7 6 5 4 3 2 1 0
Mod Reg. R/M
Mod: modul de adresare folosit (registru-registru, registru-
memorie
Reg: codul registrului folosit
R/M: al doilea registru folosit sau modul de adresare a memoriei
sib: scala-index-baza detaliaza modul de adresare folosit
Deplasament: contine o adresa pe 8, 16 sau 32 biti, folosita pentru
calculul adresei unui operand
Data imediata: contine o valoare constanta pe 8, 16 sau 32 de biti
instructiunea cea mai scurta: 1 octet
instructiunea cea mai lunga: ~ 16 octeti
23

S-ar putea să vă placă și