Vous êtes sur la page 1sur 51

Architecture des ordinateurs

Chapitre 2

Architecture externe de MICROPROCESSEUR 32 BITS MIPS r3000


Dr R. BOUDOUR

Plan
2

Architecture externe du microprocesseur 32 bits MIPS R3000 :


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

Les composants dun ordinateur

24/10/2011 07:09:06

Qui utilise le langage dassemblage ?


4

24/10/2011 07:09:06

Quand utiliser le langage dassemblage ?


5

24/10/2011 07:09:06

Modes dadressage du MIPS


6

Les modes dadressage MIPS dans les diffrents modles

24/10/2011 07:09:06

Format dinstructions MIPS


7

24/10/2011 07:09:06

Format dinstructions I (1) (1


8

24/10/2011 07:09:06

Format dinstructions I (2) (2


9

24/10/2011 07:09:06

Format dinstructions J
10

24/10/2011 07:09:06

Codage des adresses


11

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

Compiler une affectation utilisant des registres en langage C f = (g+h) - (i + j) ;


Les variables f,g,h,i et j peuvent tre affectes aux registres $s0, $s1, $s2, $s3 et $s4 respectivement. Ajoutons deux registres temporaires $t0 et $t1 Correspondance en langage dassemblage MIPS add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1 # registre $t0 contient g+h # registre $t1 contient i+j # registre $s0 contient le rsultat

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]

La constante 8 est appele dplacement et $s3 un registre de base

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]

lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 48[$s3]

# 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

Add $t0,$s1,$s2, smantique : $t0 = $s1+$s2 sa reprsentation dcimale 0 17 18 8 0 32

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

0000 0100 1011 0000


24/10/2011 07:09:06

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

LectureLecture-Ecriture mmoire (2) (2


24

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

Branchements conditionnels (1) (1


25

24/10/2011 07:09:06

Branchements conditionnels (2) (2


26

24/10/2011 07:09:06

Branchements inconditionnels (3) (3


27

24/10/2011 07:09:06

Branchements inconditionnels (1) (1


28

24/10/2011 07:09:06

Branchements inconditionnels (2) (2


29

24/10/2011 07:09:06

Appels de sous-programmes sous30

24/10/2011 07:09:06

Appels de sous-programmes sous31

24/10/2011 07:09:06

Appels de sous-programmes : Pile sous32

24/10/2011 07:09:06

Appels de sous-programmes : sousPolitique de gestion de pile


33

24/10/2011 07:09:06

Appels de sous-programmes : Exemple sous34

24/10/2011 07:09:06

Appels de sous-programmes : Exemple sous35

24/10/2011 07:09:06

Autres exemples
36

Langage C langage dassemblage MIPS

Instruction daffectation simple

24/10/2011 07:09:06

Autres exemples
37

Langage C langage dassemblage MIPS

Instruction daffectation complexe

24/10/2011 07:09:06

Autres exemples
38

Langage C langage dassemblage MIPS

Instruction conditionnelle

24/10/2011 07:09:06

Autres exemples
39

Langage C langage dassemblage MIPS Instruction ditration ou boucle

24/10/2011 07:09:06

Autres exemples
40

Langage C langage dassemblage MIPS

Instruction ditration ou boucle

24/10/2011 07:09:06

Autres exemples
41

24/10/2011 07:09:06

Quelques programmes simples


42

Affichage dune chaine de caractres

24/10/2011 07:09:06

Quelques programmes simples


43

24/10/2011 07:09:06

Annexe langage dassemblage MIPS


44

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

Il dtermine quelle opration effectuer (6 bits de poids forts)

24/10/2011 07:09:06

Services systme
51

24/10/2011 07:09:06

Vous aimerez peut-être aussi