Cours Architecture des Systèmes Informatiques Jean-Jacques Girardot [email protected] http://kiwi.emse.fr/ASI/ Troisième séance Instructions et Modes d’Adressage École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 1 Instructions et modes d’adressages CPU & Registres • Exemples : MAC, une machine virtuelle simplifiée Mémoire & Modes d’adressage Instructions • Sémantique • Représentation • Format des instructions Assembleur École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 2 Qu’y a-t-il dans une CPU ? Unité arithmétique et logique Unité de commande Registres spécialisés et généraux • • • • • • données [nombres entiers, nombres flottants] (Data Registers) adresses (Adresses Registers) pointeur d’instruction (PC, Program Counter/IP Instruction Pointer) état du calculateur (PSW, Program Status Word/Flags) pointeur de pile (SP, ou Stack Pointer) … École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 3 Déroulement d’un programme Adresse de lancement • La première instruction à exécuter Valeur initiale du registre PC (Program Counter) Exécution séquentielle • Rangement des instructions en MC par adresses croissantes Branchement (conditionnel ou non) • Changer l’adresse de la prochaine instruction à exécuter Exceptions et Interruptions • Suspension du déroulement normal d’un programme École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 4 Exceptions et Interruptions Évènements qui provoquent l’arrêt du déroulement normal d’un programme • Exception (évènement interne) : une opération provoque une erreur Division par zéro Accès à une adresse mémoire incorrecte Code opération invalide, etc. • Interruption (évènement externe) : signal extérieur à la CPU Une unité d’E/S termine une opération/est en erreur Le signal “reset” est actionné École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 5 Traitement d’une interruption L’évènement est pris en charge par la CPU • Différents niveaux selon la nature (16, 256…) ; priorités • Différents codes Déroulement : • Sauvegarde du “contexte” du programme courant Registres, PC, PSW • Exécution du code de gestion de l’interruption • Reprise éventuelle du déroulement du programme interrompu L’interruption est alors transparente École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 6 Les instructions du calculateur Types d’instructions • Opérations de l’unité arithmétique et logique [UAL] • Instructions de branchement Branchement conditionnel, inconditionnel • Appel & retour de sous-programme • Instructions de contrôle diverses Syntaxe des instructions : • Langage machine 0xA35002C4 • Assembleur LD R5,SD2 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 7 Instructions de l’UAL Réaliser des opérations dyadiques • op1 op2 op3 Architecture [ex: +, -, *, /, &,| , etc.] de l’UAL • Machine à pile empiler, dépiler ; opération sur “sommet” de la pile • Machine à “une adresse” et accumulateur/registres A A op RX RX op • Machine à deux/trois adresses op1 op1 op2 op1 op2 op3 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 8 Machine à pile Accès mémoire • “Empiler” un opérande push • “Dépiler un opérande” pull Opérations • S’appliquent aux “n” éléments situés en sommet de pile • Ex : 98*(12+45) École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 9 Machine à accumulateur Un registre spécifique (l’accumulateur) sert aux opérations. LOAD OP2 • op1 op2 op3 ADD OP3 se traduit par : STORE OP1 Chargement depuis la mémoire : LOAD Écriture en mémoire : STORE Opérations : ADD, SUB, MUL, etc. • Les expressions complexes utilisent des “temporaires” (A+B)*(C-D) devient : LOAD A STORE TMP1 SUB D ADD B LOAD C MUL TMP1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 10 Machine à registres multiples Registres spécialisés/non : données/adresses • caractéristiques différentes (taille 32/24 bits) Chaque registre (de données) se comporte comme un accumulateur Opérations registre/mémoire, ou registre/registre (A+B)*(C-D) devient : LOAD R2,A ADD R2,B LOAD R3,C SUB R3,D MUL R2,R3 Architectures RISC (Reduced Instruction Set Computer) École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 11 Instructions à adresses multiples Machines anciennes / exotiques • • • • taille variable des instructions : 1 à 26 octets… cas des machines CISC “Complex Instruction Set Computer” souvent réalisé par microprogrammation opérations spécialisées déplacement de zones de mémoire conversion de zones de mémoire opérations sur nombres flottants • Ex: 8080 et descendants… École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 12 SIM, un ordinateur “pédagogique” Une machine imaginaire La CPU • 16 registres généraux 16 bits (données & adresses), R0, R1… R15 • 1 registre programme 16 bits, PC • 1 registre d’état 16 bits, PSW : R..POCSZeeeeeeee R : bit “run” : 1 si le calculateur est en marche P : bit “parité” : bit de poids faible du résultat du dernier calcul O : bit “overflow” : dépassement de capacité en complément à 2 C : bit “carry” : retenue en complément à 1 S : bit “signe” : bit de poids fort du résultat du dernier calcul Z : bit “zéro” : 1 si le résultat du dernier calcul est nul eeeeeeee : code d’erreur ou d’interruption • Mémoire de 64 ko, adressable en mots (16 bits) ou octets (8 bits) École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 13 Les instructions de la machine 2 Formats : court, 16 bits, ou long 32 bits 0 mm ccccc xxxx yyyy 1 mm ccccc xxxx yyyy aaaaaaaaaaaaaaaa • • • • • • bit 0 : format (court 0 ou long 1) bits 1-2 : mode M (3 modes : immédiat 00, direct 01, indirect 10) bits 3-7 : code opération C (32 opérations) bits 8-11 : constante/registre X bits 12-15 : constante/registre Y bits 16-31 : constante/adresse mémoire A École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 14 Ex: chargement de registre : 0x01 0 00 00001 0101 0011 0153 R5 reçoit la valeur 3 (adressage court immédiat) LD R5,R3 0 01 00001 0101 0011 2153 R5 reçoit le contenu de R3 (adressage court direct) LD R5,(R3) 0 10 00001 0101 0011 4153 LD R5,#3 R3 désigne un mot de la mémoire, R5 reçoit le contenu de ce mot (indirect) LD.L R5,#0x3F24 1 00 00001 0101 0000 0011111100100100 R5 reçoit la valeur 0x3F24 (adressage long immédiat) LD.L R5,0x3F24 8150 3F24 1 01 00001 0101 0000 0011111100100100 R5 reçoit la valeur contenue dans le mot d’adresse 0x3F24 (adressage long direct) A150 3F24 LD.L R5,0x3F24(R3)1 10 00001 0101 0011 0011111100100100 R5 reçoit la valeur située dans le mot dont l’adresse est obtenue en ajoutant le contenu de R3 à 0x3F24 (adressage long indexé) C153 3F24 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 15 Opérations arithmétiques et logiques (1) Arithmétiques : Addition : ADD, 0x03. Ex: Soustraction : SUB, 0x04. Ex: ADD R2,#8 0328 SUB R5,R9 2459 Logiques And : AND, 0x07. Ex AND R6,(R11) Or : OR, 0x06. Ex: OR.L R12,MASK Xor: XOR, 0x08. Ex XOR.L R3,#0x8080 476B A6C01234 88308080 Comparaison Compare: CMP, 0x05. CMP.L R7,MASK(R13) C57D1234 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 16 Opérations arithmétiques et logiques (2) Arithmétiques : Opposé : NEG 0x16. Ex: NEG R2 1620 Décalage arithmétique à gauche : SAL 0x12. (id: SAR 0x13, décalage à droite). Ex: SAL R5,#9 1259 Logiques Not : NOT 0x17. Ex NOT R6 1760 Décalage logique à gauche : SLL 0x10. (id: SLR 0x11). Ex: SLL R5,R9 3059 Décalage circulaire à gauche : SCL 0x14. (id: SCR 0x15). Ex: SCL R5,R9 3459 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 17 Opérations arithmétiques et logiques (3) Multiplication & Division • MUL 0x18, DIV 0x19. Opèrent sur un couple de registres, R0-R1 : le produit de deux entiers 16 bits est un entier 32 bits. MUL R4 1840 [R0-R1] R0*R4 DIV R4 1940 [R0-R1] R4 [R0-R1] est divisé par R4 ; R0 reçoit le quotient entier, R1 le reste Positionnement des drapeaux du PSW • P, S et Z : toutes les opérations arithmétiques et logiques, chargement • C et O : opérations arithmétiques ; décalages (C : bit sortant à droite, O : bit sortant à gauche) École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 18 Exemple - 1 Calcul de C=(A+5)*(B-1) • A est à l’adresse 0x1020, B à l’adresse 0x1044, C en 0x1028 LD.L ADD LD.L SUB MUL ST.L R0,A R0,#5 R2,B R2,#1 R2 R1,C Instruction A100 1020 0305 A120 1044 0421 1820 A910 1028 Store, ST, 0x09 : “décharger un registre” • Formats directs et indirects, courts et longs. École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 19 Opérations de branchement Instruction unique : Jump, 0x0F. Opération effective : bits 8 à 11. Ex : 0000, branchement inconditionnel Pas de mode d’adressage court immédiat. JMP R3 0 01 01111 0000 0011 2F03 PC reçoit le contenu de R3 (adressage court direct) JMP (R3) 0 10 01111 0000 0011 4F03 R3 désigne un mot de la mémoire, PC reçoit le contenu de ce mot (indirect) JMP.L #0x3F24 1 00 01111 0000 0000 0011111100100100 PC reçoit la valeur 0x3F24 (adressage long immédiat) 8F00 3F24 JMP.L 0x3F24 1 01 01111 0000 0000 0011111100100100 PC reçoit la valeur contenue dans le mot d’adresse 0x3F24 (adressage long direct) AF00 3F24 JMP.L 0x3F24(R3)1 10 01111 0000 0011 0011111100100100 PC reçoit la valeur située dans le mot dont l’adresse est obtenue en ajoutant le contenu de R3 à 0x3F24 (adressage long indexé) CF03 3F24 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 20 Branchements conditionnels JEQ : jump si égal 0x1 • JEQ R5 (Z=0 et S=0) JL : jump si inférieur 0x4 • JLT R5 2F35 2F45 (S=1) JGE : supérieur ou égal 0x5 • JGE R5 2F55 (S=0) 2F65 (Z=1 ou S=1) JC : saut si carry 0x8 • JC R5 (saut si Z=0) JG : jump si supérieur 0x3 • JGT R5 2F25 JLE : inférieur ou égal 0x6 • JLE R5 (saut si Z=1) JNE : jump si non égal 0x2 • JNE R5 2F15 2F85 (C=1) JNC : non carry, 0xA (C=0) JO : overflow, 0x9 (O=1) JNO : non overflow, 0xB (O=0) JP : parity, 0xC (P=1) JNP : non parity, 0xD (P=0) École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 21 Exemple - 2 Calcul de C=MAX(A,B) • A est à l’adresse 0x1020, B à l’adresse 0x1044, C en 0x1028, le code en0x400 0400 0404 0408 040C 0410 LD.L CMP.L JGT LD.L ST.L R0,A R0,B 0x410 R0,B R0,C A100 A500 8F30 A100 A900 1020 1044 0410 1044 1028 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 22 Exemple - 3 : PGCD de 2 nombres Algorithme : • Nombres dans R2 et R3 • Étape 1 : si R2 = R3, alors : R2 est le PGCD ; arrêt du programme. • Étape 2 : si R2 > R3, échanger R2 et R3 • Étape 3 : soustraire R2 de R3 • Étape 4 : revenir à l’étape 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 23 PGCD : le programme Code placé en 0x1000 TEST:CMP SUITE: FIN: R2,R3 JEQ FIN JLT SUITE LD R0,R3 LD R3,R2 LD R2,R0 SUB R3,R2 JMP TEST ... 1000 1002 1006 100A 100C 100E 1010 1012 1016 2523 8F10 1016 8F40 1010 2103 2132 2120 2432 8F00 1000 ... École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. 24