Documente Academic
Documente Profesional
Documente Cultură
Arhitectura x86
Arhitectura x86
De citit:
capitolele 3, 14
Modificat: 24-Oct-16
Capitolul 4
Cuprins capitol 4
Familia x86
Registrele
Data
Pointer, index
Control
Segment
Modul real
Segmentare, Paginare
ntreruperi
Modul protejat
Registrele Segment
Descriptori de segment
Tabele de descriptori
Modele de segmentare
Capitolul 4
An
Frecvena
Tranzistoare
Registre
4004
1969
0.74
2.3K
12
4K
8080
1974
4.5K
16
64K
8086
1978
29K
16
16
1 MB
80386
1985
20
275K
32
32
4 GB
Pentium
1993
60
3.1M
32
40?
4GB
Pentium 4 2000
1500
42M
32
64GB
Core 2
2006
3000
291M
64
64GB
Core i7
2008
3400
1.4G
64
64GB
Xeon E5
2012
3600
5.5G
64
768GB
Capitolul 4
Arhitectura x86
Capitolul 4
Capitolul 4
Capitolul 4
Capitolul 4
Capitolul 4
C2
EFLAGS(Indicatorii de control)
DF (Direction Flag) este utilizat de instruciunile pe iruri i
specific direcia de parcurgere a acestora:
0 irurile se parcurg de la adrese mici spre adrese mari;
1 irurile sunt parcurse invers.
C2
EFLAGS
Status flags
Se actualizeaz dup operaii aritmetice/logice
Direction flag
Forward/backward direcia copierii
System flags
IF : activare intreruperi
TF : Trap flag (pentru debugging)
Capitolul 4
10
Capitolul 4
11
Modurile 86
Toate procesoarele x86 au dou moduri importante
Modul real
Adrese i registre pe 16 bii
Memorie 1MB
640K should be enough for everyone
Folosit dup reset (grub)
Modul protejat
Capitolul 4
Registre de 32 bii
Segmentare i paginare
Protecia kernelului i a proceselor
Folosit de Linux, Windows
12
Modul Protejat
Segmentarea&paginarea = translatare adrese 32 bii
Segmentarea: adrese logice adrese lineare
Paginarea: adrese lineare adrese fizice
Fr paginare
adresa linear = adresa fizic
Capitolul 4
13
Capitolul 4
14
Capitolul 4
https://www.cs.rutgers.edu/~pxk/416/notes/10-paging.html
15
Adrese logice
(n program)
Capitolul 4
http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/
16
Modul protejat
Parte vizibil
Instruciuni care ncarc selectoarele de segment
mov, pop, lds, les, lss, lgs, lfs
Invizibil
ncrcat automatic din GDT, LDT, IDT
Capitolul 4
17
Adresarea memoriei
calculul adresei logice
Registru
segment
:[
Adresa de segment
Capitolul 4
Registru de
baza +
Registru
+
index
Deplasament
] ]
Adresa de offset
18
Adresarea memoriei
Capitolul 4
19
Adresarea memoriei
Capitolul 4
20
Procesarea ntreruperilor
De citit:
Capitol 14,
fr 14.3
Capitolul 4
21
Ce sunt ntreruperile?
Intreruperile altereaz fluxul programului
Comportament similar apelului de procedur
Exist diferene semnificative
Capitolul 4
22
Proceduri
Capitolul 4
23
Taxonomia ntreruperilor
Capitolul 4
24
Capitolul 4
25
Interrupt Flag
IF (Interrupt flag) [dez]activeaz ntreruperile
IF==0 nu se permit ntreruperi
Instruciunea cli (clear interrupts)
La declanarea intreruperii IF devine 0
Instruciunea sti (set interrupts)
Capitolul 4
26
27
Excepii
3 tipuri: Fault, Trap, Abort
Fault i trap sunt declanate ntre instruciuni
Abort e declanat la erori severe
Erori hardware
Valori inconsistente n sistem
Capitolul 4
28
Fault i Trap
Fault
Se declaneaz nainte de instruciunea n cauz
Se repornete instruciunea
Exemplu: page-not-found fault
Trap
Capitolul 4
29
Scop
Divide error
Single-step
Nonmaskable interrupt (MNI)
Breakpoint
Overflow
13
14
16
Capitolul 4
30
ntreruperi rezervate
Divide Error Interrupt
Instruciunea div/idiv ctul nu ncape n destinaie
Single-Step Interrupt
Dac Trap Flag este setat (TF==1)
CPU genereaz automat int 1 dup execuia fiecrei instruciuni
Breakpoint Interrupt
int 3 n cod main este un octet(CCH)
Cum este folosit la debug?
31
ntreruperi software
Iniiate de execuia instruciunii
int interrupt-number
interrupt-number = [0 .. 255]
n Linux int 0x80 este apelul de sistem
180 servicii diferite
EAX conine numrul serviciului
Capitolul 4
32
Capitolul 4
33
Capitolul 4
34
Capitolul 4
35
Procedura putch
; primete caracterul in AL.
putch:
pusha
mov
[temp_char],AL
mov
EAX,4
mov
EBX,1
mov
ECX,temp_char
mov
EDX,1
int
0x80
popa
ret
Capitolul 4
;
;
;
;
4 = write
1 = std output (display)
pointer to char buffer
# bytes = 1
36
Procedura getstr
; primete EDI = buffer, ESI
getstr:
pusha
pushf
mov
EAX,3
mov
EBX,0
mov
ECX,EDI
mov
EDX,ESI
int
0x80
dec
EAX
mov
byte[EDI+EAX],0
popf
popa
ret
Capitolul 4
= lungimea
;
;
;
;
37
ntreruperi hardware
Sunt asincrone, produse de hardware
Se aplic un semnal extern procesului
Capitolul 4
38
Capitolul 4
39