Contrôle périodique — INF1600 —Automne 2012 2/4
Question 1 Architecture (9 points)
Pour permettre d’exécuter une plus grande partie des instructions de l’IA-32, nous avons ajouté T2 à
l’architecture du devoir 1 : (les fils de contrôles ne sont pas dessinés, pour la clarté)
Q
Q
SET
CLR
DIR
32
+
Q
Q
SET
CLR
DEIP
mux
A4
Mémoire1
Donnée
Adresse
IRá23..0ñ
UAL
Mémoire2
Donnée
Adresse
Registres
[0..7]
(soit eax,
ebx, …)
Q
QSET
CLR
D
T
IRá12..0ñ
C
IRá14..13ñ
mux
B
IRá17..15ñ
IRá20..18ñ
IRá23..21ñ
DE
F
0
1
2
0
1
Circuit de
contrôle IRá31..24ñ
lecture
écriture
X Y
G
Q
QSET
CLR
D
T2
L’UAL permet entre autres les opérations suivantes (écrit comme « contrôlesortie de l’UAL ») :
0X : 1Y : 2X + Y : 3X Y : 4X << Y : 5X >> Y ; 6Y + 4 : 7Y 4 : …
Et les registres sont numérotés (numérotation différente de celle du devoir 1) :
eax:=R[0] : ebx:=R[1] : ecx:=R[2] : edx:=R[3] : esi:=R[4] : edi:=R[5] : ebp:=R[6] : esp:=R[7]
Soit l’instruction IA-32 « POP (%edx) » (pour les sous-questions a)-c)a)b)c)e) );
a) [1 pt] Donnez le RTN abstrait pour cette instruction.
b) [1 pt] Indiquez comment pourrait être codée en langage machine, sur cette architecture, une
instruction qui fait cette opération. C’est-à-dire de donner la valeur, dans la base de votre choix,
pour chacun des champs de IR que vous pouvez.
c) [3 pts] Donnez le RTN concret effectuant cette opération, en supposant que IR contient bien
l’instructionb). Donnez le cas général, avec les IRá…ñ, pas le cas spécifique pour les
registres/constantes spécifiés. Effectuez-le en le moins de cycles possibles.
d) [2 pts] Indiquez les signaux de contrôle pour « A, B, C, D, E, F, G, UAL, écrireEIP, écrireIR, écrireT,
écrireT2, écrireRegistre » (les signaux « read/write » et « enable » de Mémoire2 étant liés de
manière logique avec F et G, et la Mémoire1 étant toujours active en lecture) pour chaque cycle,
pour le RTN concret « T 8 ; T2 edx + T : T edx + T ; ecx Mémoire2[T2] :
IR Mémoire1[EIP] ; EIP EIP + 0x2000 », en supposant qu’au départ IR=0x004C0008 et
qu’après son écriture, IR contient : IRá12..0ñ=0 : IRá14..13ñ=1 : IRá17..15ñ=0 : IRá20..18ñ=0 :
IRá23..21ñ=0. (Le but est de vérifier que vous savez générer les signaux pour un RTN concret
quelconque; il ne correspond pas à une instruction qui a du sens)
e) [2 pts] L’architecture ne peut pas exécuter des « pop » avec certains types opérandes. Dites un type
d’opérande pour lequel l’architecture ne peut pas faire « pop ». Proposez comment modifier
l’architecture, en essayant de minimiser la taille des modifications, pour pouvoir exécuter ce
genre d’instruction. Expliquez clairement comment l’opération sera effectuée sur votre
architecture modifiée.