Академический Документы
Профессиональный Документы
Культура Документы
Programmation systme
Rponse 1.1
1) 286 (a)
2) 386 (b)
Automne 2002
Premier examen
IFT-17584
Programmation systme
Rponse 1.2
1)
2)
3)
4)
5)
6)
7)
Automne 2002
Premier examen
IFT-17584
Programmation systme
unsigned
Notes
Le segment de code courant travaille sur des oprandes de 32 bits.
Le segment de pile courant utilise des adresses de 32 bits.
/3
(15 minutes)
Rponse 2.1
public Sub32
Sub32:
mov eax, [esp+4]
sub eax, [esp+8]
ret 8
Automne 2002
Premier examen
IFT-17584
Programmation systme
Octet
0x00
0x01
0x00
0x00
0x40
0x43
0x01
0x00
Rponse 2.2
1) 0x0100 soit 256.
2) 0x00014340 soit 85752.
3)
0x43400000
0100 0011 0100 0000 0000 0000 0000 0000
010000110100000000000000000000000
0 10000110 100000000000000000000000
Le bit de signe est 0. La valeur est donc positive.
Lexposant est 100001102 soit 13410. Il faudra donc utiliser la puissance de 2 de 710
(13410-12710).
La partie fractionnaire est 1.100000000000000000000002, soit 1.510.
La valeur est donc 1.5 * 27 soit 192.0.
Automne 2002
Premier examen
IFT-17584
Programmation systme
;
;
;
;
eax <- aA
lA <- eax
ebx <- aB
lB <- eax
Notes
Le segment de code courant travaille avec des oprandes de 32 bits.
Le segment de pile courant utilise des adresses de 32 bits.
Automne 2002
/3
(15 minutes)
Premier examen
IFT-17584
Programmation systme
Rponse 2.3
Adresse haute
Adresse basses
aB
[ebp+12]
aA
[ebp+8]
[ebp+4]
Adresse de retour
[ebp]
ebp prcdent
lA
[ebp-4]
lB
[ebp-8]
Figure 2.3.3 : Reprsentation de la pile
[esp+20]
[esp+16]
[esp+12]
[esp+8]
[esp+4]
[esp]
Automne 2002
Premier examen
IFT-17584
Programmation systme
eax, 0a9876543h
eax, 065432100h
eax, 1
eax
@F
; Point A
@@:
jbe @F
nop ; Point B
@@:
jge @F
nop ; Point C
@@:
jc @F
nop ; Point D
Notes
Le segment de code courant travaille avec des oprandes de 32 bits.
Le segment de pile courant utilise des adresses de 32 bits.
/3
(15 minutes)
Rponse 2.4
1) Carry = 1, Zero = 0, Sign = 0 et Overflow = 0
2) Carry = 1, Zero = 1, Sign = 0 et Overflow = 0
3) Point A = oui, Point B = non, Point C = non, Point D = non
Automne 2002
Premier examen
IFT-17584
Programmation systme
/3
(15 minutes)
Rponse 2.5
finit
fld
fadd
fld
fsub
fmulp
fdiv
fstp
sX
A
sX
B
st(1), st(0)
D
sY
Automne 2002
Premier examen
IFT-17584
Programmation systme
Rponse 2.6
Max:
mov esi, [esp+4]
mov ecx, 32
pxor MM0, MM0
@@: pmaxub MM0, [esi]
add esi, 8
loop @B
movq
punpcklbw
punpckhbw
pmaxub
MM1,
MM1,
MM0,
MM0,
MM0
MM1
MM0
MM1
movq
punpcklbw
punpckhbw
pmaxub
MM1,
MM1,
MM0,
MM0,
MM0
MM1
MM0
MM1
movq
punpcklbw
punpckhbw
pmaxub
MM1,
MM1,
MM0,
MM0,
MM0
MM1
MM0
MM1
Automne 2002
Premier examen
IFT-17584
Programmation systme
Rponse 2.7
Plusieurs algorithmes traitent un grand nombre de donnes places linairement en
mmoire, sans utiliser plusieurs fois les mmes donnes. Ces donnes sont dites non
temporelles . Dans ce cas, le fait de placer ces donnes en mmoire cache napporte
aucun avantage. De plus, les placer en mmoire cache oblige le processeur retirer
dautres donnes de la cache, pour librer de lespace. Il peut donc en rsulter une baisse
de performance, si les donnes expulses de la cache sont nouveau ncessaires
rapidement.
Automne 2002
Premier examen
IFT-17584
Programmation systme
0x00001000
0x0010
0x00001000
0x0000
...
Mmoire
0x20000030
0x000030000
0x00408200
0x30000030
0x00c08200
Adresse linaire
0x00002000
...
0x40000001
0x00c0fa00
...
0x70000001
0x00c0fa00
0x80000001
0x00c0f200
0x90000001
0x00c0f600
0x50000001
0x00c0f200
0x60000001
0x00c0f600
Dplacement
0x00000100
Figure 2.8.2 : Adresse logique
Dites aussi si cette espace mmoire peut tre lue, crite et/ou excute.
/2
(10 minutes)
Rponse 2.8
tape 1 Dcoder le slecteur de segment
0x0017 = 0000 0000 0000 11112
Index = 0000 0000 0000 12 = 210
Indicateur de table = 12 = Locale
Niveau de privilge = 112 = 310 = Utilisateur
tape 2 Dterminer ladresse du descripteur de la table locale
LDTR = 0
Index = 0
Indicateur de table = 1 = Globale
Niveau de privilge = 0 = Systme
Automne 2002
Premier examen
IFT-17584
Programmation systme
Automne 2002
Premier examen
IFT-17584
Programmation systme
0,5 point est accord pour lutilisation du LDTR et la recherche dans la table
globale.
0,5 point est accord pour le calcul de ladresse de base de la table locale.
0,5 point est accord pour le calcul final de ladresse linaire.
0x00001000
0x00001000
...
Mmoire
0x00002003
0x00005000
0x00003003
0x00002000
0x00005007
0x00003000
Adresse physique
0x66666666
0x00006000
...
...
0x77777777
0x00006007
0x99999999
0x00007007
0x00004000
0x44444444
0x55555555
...
0x00004007
...
...
0x88888888
0x00007000
...
0xaaaaaaaa
0x11111111
0xbbbbbbbb
0x22222222
0xcccccccc
0x33333333
Rponse 2.9
tape 1 Diviser ladresse linaire en ses trois parties
0x00001004
0000 0000 0000 0000 0001 0000 0000 0100
0000000000 0000000001 0000000001000
Index de la table de page = 0000000000 = 0
Index dans la table de page = 0000000001 = 1
Dplacement dans la page = 000000000100 = 4
tape 2 Dterminer ladresse de la table de page
Le registre CR3 nous indique que le rpertoire des tables de pages dbute ladresse
physique 0x00001000. Le premier entr du rpertoire (index 0) contient
0x00002003
Automne 2002
Premier examen
IFT-17584
Programmation systme
P = 1 = Prsente en mmoire
R/W = 1 = Lecture criture permise
U/S = 0 = Page systme
PWT = 0 = Cache activ pour les critures
PCD = 0 = Cache activ pour les lectures
A=0
PS = 0 = Page de 4 Ko
Adresse de la table de pages = 0x00002000
tape 3 Dterminer la base de la page
La table de page dbute 0x00002000 et lindex dans la table de page est 1. Ladresse de
base de la page se trouve donc ladresse physique 0x00002004. Cette case de
mmoire contient 0x00005007.
P = 1 = Prsente en mmoire
R/W = 1 = criture permise
U/S = 1 = Page utilisateur
PWT = 0 = Cache activ pour les critures
PCD = 0 = Cache activ pour les lectures
A=0
D=0
PAT = 0 = Page de 4 Ko
Adresse de base de la page = 0x00005000
Comme la page est prsente en mmoire, la lecture de ladresse ne provoquera pas de
faute de page.
tape 4 Dterminer ladresse physique
Ladresse de base de la page est 0x00005000 et le dplacement dans la page est de 4
donc ladresse physique complte est 0x00005004. Le mot double contenu cette
adresse est 0x55555555.
Automne 2002
Premier examen
IFT-17584
Programmation systme
Notes
Le segment de code courant travaille avec des oprandes de 32 bits.
Le segment de pile courant utilise des adresses de 32 bits.
/2
(10 minutes)
Rponse 2.10
tape 1 Dterminer le code dopration
Le manuel nous donne 0x03.
tape 2 Dterminer loctet ModR/M
La table du chapitre 2 du volume 2 nous donne un mode 01 et un R/M de 110 pour ce
mode dadressage avec un dplacement encod sur 8 bits. Elle nous donne aussi la valeur
complte de 0x46.
tape 3 Le dplacement
Le dplacement est de 16 octets. Il est encod sur 8 bits. La valeur est donc 0x10.
tape 4 Assemblage des trois parties
0x03 0x46 0x10
Automne 2002
Premier examen