1/13 Architecture des systèmes informatiques Chapitre Idir AIT SADOUNE CentraleSupélec - Département Informatique 3, rue Joliot-Curie, 91192 Gif-sur-Yvette cedex <idir.aitsadoune@centralesupelec.fr> Année scolaire 2015-2016, Séquence 5
2/13 Outline
/13 Interrogations Quelle opération à effectuer?
/13 Interrogations Quelle opération à effectuer? Où sont les opérandes?
/13 Interrogations Quelle opération à effectuer? Où sont les opérandes? Où mettre le résultat?
/13 Interrogations Quelle opération à effectuer? Où sont les opérandes? Où mettre le résultat? Où est l suivante?
/13 Interrogations Quelle opération à effectuer? Où sont les opérandes? Où mettre le résultat? Où est l suivante? Quelle taille pour les mots mémoire, les s, les données?
4/13 Format des s (1/2) Format théorique : Machine à 4 adresses Code opération Argument 1 Argument 2 Résultat Instruction suivante
4/13 Format des s (1/2) Format théorique : Machine à 4 adresses Code opération Argument 1 Argument 2 Résultat Instruction suivante Introduction du CO : Machine à 3 adresses Code opération Argument 1 Argument 2 Résultat
5/13 Format des s (2/2) Dualité d un opérande : Machine à 2 adresses Code opération Argument 1 Argument 2 et résultat
5/13 Format des s (2/2) Dualité d un opérande : Machine à 2 adresses Code opération Argument 1 Argument 2 et résultat Introduction de l accumulateur : Machine à 1 adresse Code opération Argument
6/13 Machine de cours (1/3) Architecture Von
/13 Machine de cours (2/3) Architecture Von 1 adresse Mémoire constituée de mots de 16 bits : données et s sur 16 bits Adresses aussi sur 16 bits (2 16 = 64 kmots = 128 ko)
7/13 Machine de cours (2/3) Architecture Von 1 adresse Mémoire constituée de mots de 16 bits : données et s sur 16 bits Adresses aussi sur 16 bits (2 16 = 64 kmots = 128 ko) Notations utilisées Mem[adresse] : désigne une case mémoire d adresse donnée := : mémorisation d une valeur (mémoire ou registre) utilisation écriture d une valeur à une adresse : Mem[$200] := 45 lecture de la valeur contenue à une adresse : R := Mem[$20F]
/13 Machine de cours (3/3) Opérations chargement (LDA) et rangement en mémoire (STA) de l accumulateur addition (ADD), soustraction (SUB) mise à zéro de l accumulateur (CLR) branchements (JMP et JAN)
/13 Machine de cours (3/3) Opérations chargement (LDA) et rangement en mémoire (STA) de l accumulateur addition (ADD), soustraction (SUB) mise à zéro de l accumulateur (CLR) branchements (JMP et JAN) Modes d adressage immédiat : argument = opérande (ADD #10) direct : argument = adresse de l opérande (LDA $2000) indirect : argument = adresse de l adresse de l opérande (STA @3000) implicite : pas d argument (CLR)
Machine de cours (3/3) Opérations chargement (LDA) et rangement en mémoire (STA) de l accumulateur addition (ADD), soustraction (SUB) mise à zéro de l accumulateur (CLR) branchements (JMP et JAN) Modes d adressage immédiat : argument = opérande (ADD #10) direct : argument = adresse de l opérande (LDA $2000) indirect : argument = adresse de l adresse de l opérande (STA @3000) implicite : pas d argument (CLR) Cas des sauts (branchements) saut direct (JMP $2000 LDCO #$2000) 8/13 saut indirect (JMP @$3000 LDCO $3000)
9/13 Récapitulatif Instructions et modes d adressage Immédiat Direct Indirect LDA AQ := arg AQ := Mem[arg] AQ := Mem[Mem[arg]] STA Mem[arg] := AQ Mem[Mem[arg]] := AQ ADD AQ := AQ + arg AQ := AQ + Mem[arg] AQ := AQ + Mem[Mem[arg]] SUB AQ := AQ - arg AQ := AQ - Mem[arg] AQ := AQ - Mem[Mem[arg]] JMP/JAN CO := arg CO := Mem[arg]
10/13 Codage des s Une "Infinité" de codages possibles Un choix "arbitraire" pour le cours 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X X X X X 00 : implicite 01 : immédiat 10 : direct 11 : indirect 000 : LDA 001 : ADD 010 : SUB 011 : STA 100 : JMP 101 : JAN 110 : CLR 111 :
1/13 Un programme en langage binaire/assemblage Un programme en langage binaire Direct 0000 0010 0000 0000 LDA 0010 0000 0000 0000 $2000 Immédiat 0000 0001 0000 0001 ADD 0000 0000 0000 1010 $000A Indirect 0000 0011 0000 0011 STA 0010 0000 0000 0010 $2002
11/13 Un programme en langage binaire/assemblage Un programme en langage binaire Direct 0000 0010 0000 0000 LDA 0010 0000 0000 0000 $2000 Immédiat 0000 0001 0000 0001 ADD 0000 0000 0000 1010 $000A Indirect 0000 0011 0000 0011 STA 0010 0000 0000 0010 $2002 Un programme en langage LDA $2000 // adressage direct ADD #10 // adressage immédiat STA @$2002 // adressage indirect
12/13 Amélioration du langage (1/2) programme ORG $2000 NB1 WORD 100 NB2 WORD 0 ADRNB2 WORD NB2 TAILLE EQU 10 ; Programme principal ORG $1000 DEBUT LDA NB1 ADD #TAILLE STA @ADRNB2
13/13 Amélioration du langage (2/2) programme ORG $2000 NB1 WORD 100 NB2 WORD 0 ADRNB2 WORD NB2 TAILLE EQU 10 ; Programme principal ORG $1000 DEBUT LDA NB1 ADD #TAILLE STA @ADRNB2