Professional Documents
Culture Documents
Chapitre 2
Plan
2
Les registres visibles du logiciel. L'adressage et la structuration de l'espace adressable. Le langage d'assemblage du processeur MIPS R3000
24/10/2011 07:09:06
Introduction
3
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
Format dinstructions J
10
24/10/2011 07:09:06
24/10/2011 07:09:06
Format dinstructions R
12
24/10/2011 07:09:06
Format dinstructions R
13
24/10/2011 07:09:06
Identificateurs
14
Remarque : Pour plus de dtails sur la syntaxe du langage MIPS , voir documents
24/10/2011 07:09:06
Affectation
15
24/10/2011 07:09:06
Affectation
16
Soit un tableau A de 100 mots Les registres $s1 et $s2 sont associs aux variables g et h Ladresse de dpart ou ladresse de base du tableau est dans $s3. Traduisons g = h + A[8] en langage MIPS; lw $t0, 8($s3) add $s1, $s2, $t0 # registre temporaire $t0 reoit A[8] # g = h + A[8]
24/10/2011 07:09:06
Affectation
17
Soit h associ au registre $s2 et ladresse de base du tableau est attache au $s3 la traduction en MIPS de : A[12] = h + A[8]
# registre temporaire $t0 reoit A[8] # registre temporaire $t0 reoit h+A[8] # range dans A[12] h+A[8]
24/10/2011 07:09:06
Affectation
18
Soit un exemple de tableau avec variable indice g = h+A[i] ; Soit A un tableau de 100 lments, sa base est $s3 et aux variables g,h et i, le compilateur a associ les registres $s1, $s2 et $s4 dans lordre Correspondance en langage dassemblage pour
g = h + A[i] add $t1, $s4,$s4 add $t1, $t1, $t1 add $t1,$t1,$s3 lw $t0,0($t1) add $s1,$s2,$t0 # $t1 = 2*i # $t1 = 4*i # $t1= adresse de A[i] (4*i+$s3) # $t0=A[i] # g=h+A[i]
24/10/2011 07:09:06
Reprsentation en machine
19
Les champs 0 et 32 indiquent une addition le 2me champ donne le numro du registre : 17=$s1, oprande source 1 le 3me champ fournit lautre registre : 18=$s2, oprande source 2 le 4me champ indique le numro du registre destination : 8=$t0 le 5me champ est inutilis pour cette instruction, laiss 0
24/10/2011 07:09:06
Reprsentation en machine
20
Soit traduire laffectation crite en langage C : A[300] = h+A[300] Nous supposons que : $t1 = A, $s2 = h la traduction en MIPS : lw $t0,1200($t1) # $t0=A[300] add $t0,$s2,$t0 #$t0= = h + A[300] sw $t0, 1200($t1) # range h+A[i] dans A[300] op 35 0 rs 9 18 rt 8 8 rd 1200 8 0 32 as funct En dcimal
43
100011 000000 101011
9
01001 10010 01001
8
01000 01000 01000
1200
0000 0100 1011 0000 01000 00000 100000
En binaire
PseudoPseudo-instruction MOVE
21
24/10/2011 07:09:06
PseudoPseudo-instruction Li
22
24/10/2011 07:09:06
LectureLecture-Ecriture mmoire
23
24/10/2011 07:09:06
Pour rsumer, dans une architecture de machine de type load/store, on n'a pas la possibilit a priori de faire : des transferts entre registres ou de mmoire mmoire. Ainsi on relve dans le jeu d'instruction du R3000, concernant les instructions de chargement que l'on ne peut que CHARGER une adresse ou le contenu d'une adresse dans un registre (instruction l? Rdest, address) ; Concernant les instructions de rangement en mmoire On ne peut que ranger en mmoire depuis un registre via une instruction du type s? Rsrc, address Mais on ne peut ni ranger le contenu d'un registre dans un autre registre Ni d'une adresse mmoire dans une adresse mmoire.
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
Autres exemples
36
24/10/2011 07:09:06
Autres exemples
37
24/10/2011 07:09:06
Autres exemples
38
Instruction conditionnelle
24/10/2011 07:09:06
Autres exemples
39
24/10/2011 07:09:06
Autres exemples
40
24/10/2011 07:09:06
Autres exemples
41
24/10/2011 07:09:06
24/10/2011 07:09:06
24/10/2011 07:09:06
Classes dinstructions
24/10/2011 07:09:06
Arithmtiques et Logiques
45
24/10/2011 07:09:06
Branchements
46
24/10/2011 07:09:06
Accs mmoire
47
24/10/2011 07:09:06
Instructions systme
48
24/10/2011 07:09:06
CodOp spcial
49
Pour le format R, le codeOp peut tre nul et cest le champ func (6bits de poids faible ) qui dtermine lopration
24/10/2011 07:09:06
Code opration
50
24/10/2011 07:09:06
Services systme
51
24/10/2011 07:09:06