Arch_2lmd_Pr-  és 3 (1)

download Arch_2lmd_Pr-  és 3 (1)

of 51

  • date post

    18-Jul-2015
  • Category

    Documents

  • view

    35
  • download

    0

Embed Size (px)

Transcript of Arch_2lmd_Pr-  és 3 (1)

Architecture des ordinateursChapitre 2

Architecture externe de MICROPROCESSEUR 32 BITS MIPS r3000Dr R. BOUDOUR

Plan2

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 R300024/10/2011 07:09:06

Introduction3

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 MIPS6

Les modes dadressage MIPS dans les diffrents modles

24/10/2011 07:09:06

Format dinstructions MIPS7

24/10/2011 07:09:06

Format dinstructions I (1) (18

24/10/2011 07:09:06

Format dinstructions I (2) (29

24/10/2011 07:09:06

Format dinstructions J10

24/10/2011 07:09:06

Codage des adresses11

24/10/2011 07:09:06

Format dinstructions R12

24/10/2011 07:09:06

Format dinstructions R13

24/10/2011 07:09:06

Identificateurs14

Remarque : Pour plus de dtails sur la syntaxe du langage MIPS , voir documents24/10/2011 07:09:06

Affectation15

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

Affectation16

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

Affectation17

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

Affectation18

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 pourg = 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 machine19

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 machine20

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

43100011 000000 101011

901001 10010 01001

801000 01000 01000

12000000 0100 1011 0000 01000 00000 100000

En binaire

0000 0100 1011 000024/10/2011 07:09:06

PseudoPseudo-instruction MOVE21

24/10/2011 07:09:06

PseudoPseudo-instruction Li22

24/10/2011 07:09:06

LectureLecture-Ecriture mmoire23

24/10/2011 07:09:06

LectureLecture-Ecriture mmoire (2) (224

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) (125

24/10/2011 07:09:06

Branchements conditionnels (2) (226

24/10/2011 07:09:06

Branchements inconditionnels (3) (327

24/10/2011 07:09:06

Branchements inconditionnels (1) (128

24/10/2011 07:09:06

Branchements inconditionnels (2) (229

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 pile33

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 exemples36

Langage C langage dassemblage MIPS

Instruction daffectation simple

24/10/2011 07:09:06

Autres exemples37

Langage C langage dassemblage MIPS

Instruction daffectation complexe

24/10/2011 07:09:06

Autres exemples38

Langage C langage dassemblage MIPS

Instruction conditionnelle

24/10/2011 07:09:06

Autres exemples39

Langage C langage dassemblage MIPS Instruction ditration ou boucle

24/10/2011 07:09:06

Autres exemples40

Langage C langage dassemblage MIPS

Instruction ditration ou boucle

24/10/2011 07:09:06

Autres exemples41

24/10/2011 07:09:06

Quelques programmes simples42

Affichage dune chaine de caractres

24/10/2011 07:09:06

Quelques programmes simples43

24/10/2011 07:09:06

Annexe langage dassemblage MIPS44

Classes dinstructions

24/10/2011 07:09:06

Arithmtiques et Logiques45

24/10/2011 07:09:06

Branchements46

24/10/2011 07:09:06

Accs mmoire47

24/10/2011 07:09:06

Instructions systme48

24/10/2011 07:09:06

CodOp spcial49

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 opration50

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

24/10/2011 07:09:06

Services systme51

24/10/2011 07:09:06