Assembleur
1Génie informatique et génie logiciel H2015
INF1600: Architecture des
micro-ordinateurs
Assembleur
Introduction à IA-32
Responsable du cours : Giovanni Beltrame
giovanni.beltrame@polymtl.ca
Local: M-4109
Chargée de cours: Luiza Gheorghe
luiza.gheorghe@polymlt.ca
Assembleur
2Génie informatique et génie logiciel H2015
eax:=R[0] : ebx:=R[1] :
ecx:=R[2] : edx:=R[3] :
esi:=R[4] : edi:=R[5] :
ebp:=R[6] : esp:=R[7]
L’UAL permet entre autres les opérations suivantes :
0→X : 1→Y : 2→X + Y : 3→X - Y : 4→X << Y :
5→X >> Y ; 6→Y + 4 : 7→Y - 4 : …
Exercice architecture
Q
Q
SET
CLR
D
IR
32
+
Q
Q
SET
CLR
D
EIP
mux
A4
Mémoire1
Donnée
Adresse
IR
UAL
Mémoire2
Donnée
Adresse
Registres
[0..7]
(soit eax,
ebx, …)
Q
QSET
CLR
D
T
IR
C
IR
mux
B
IR
IR
IR
D
E
F
0
1
2
0
1
Circuit de
contrôle IR
lecture
écriture
X Y
G
mux
H
0
1
Assembleur
3Génie informatique et génie logiciel H2015
Exercice architecture
Soit l’instruction IA-32 «JMP *16(%eax,%ebx,8) »
a) Donnez le RTN abstrait pour cette instruction
EIP<-Memoire2[16+R[0]+R[1]*8]
jmp *4(%eax) RTN: R[eip] ←M32[4 + R[eax]] (cours 5)
b) Indiquez comment pourrait être codée en langage machine
une instruction qui fait cette opération.
eax:=R[0] : ebx:=R[1] : ecx:=R[2] : edx:=R[3] : esi:=R[4] :
edi:=R[5] : ebp:=R[6] : esp:=R[7]
IR<23..21> = 0 : IR<20..18> = 1 : IR<17..15> = 0 :
IR<14..13> = 3 IR<12..0> = 16
Assembleur
4Génie informatique et génie logiciel H2015
Soit l’instruction IA-32 «JMP *16(%eax,%ebx,8)»
c) Donnez le RTN concret, en supposant que IR contient bien l’instruction
que vous avez spécifiée en b).
IR<23..21> = 0 : IR<20..18> = 1 : IR<17..15> = 0 : IR<14..13> = 3
IR<12..0> = 16
EIP<-Memoire2[16+R[0]+R[1]*8]
Cycle 1 : T <- R[IR<20..18>] ;
Cycle 2 : T <- T << IR<14..13> ;
Cycle 3 : T <- T+R[IR<23..21>] ;
Cycle 4 : T <- T+IR<12..0> ;
Cycle 5 : EIP <- M2[T] ;
Exercice architecture
lecture
écriture
Assembleur
5Génie informatique et génie logiciel H2015
EIP
←
←←
←
EIP + 4 : IR
←
←←
←
Mémoire1[EIP] : T
←
← ←
←
3 ;
T2 ←
←←
←T << 2 ;
T ←
←←
←T - Mémoire2[T2] ;
ecx ←
←←
←T >> ebx ;
au départ IR=0x09876543,
après IR〈
〈〈
〈12..0〉
〉〉
〉=3 : IR〈
〈〈
〈14..13〉
〉〉
〉=2 : IR〈
〈〈
〈17..15〉
〉〉
〉=1 : IR〈
〈〈
〈20..18〉
〉〉
〉=3 : IR〈
〈〈
〈23..21〉
〉〉
〉=2
eax:=R[0] : ebx:=R[1] :
ecx:=R[2] : edx:=R[3] :
esi:=R[4] : edi:=R[5] :
ebp:=R[6] : esp:=R[7]
Opérations UAL:
0→X : 1→Y :
2→X + Y : 3→X - Y :
4→X << Y : 5→X >> Y :
6→Y + 4 : 7→Y - 4 : …
1 / 37 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!