Télécharger la présentation
Publié parGautier Bois Modifié depuis plus de 9 années
1
Cours Architecture des Systèmes Informatiques
Jean-Jacques Girardot Troisième séance Instructions et Modes d’Adressage
2
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
3
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) …
4
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
5
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é
6
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
7
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
8
Instructions de l’UAL Réaliser des opérations dyadiques
op1 op2 op3 [ex: +, -, *, /, &,| , etc.] Architecture 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
9
Machine à pile Accès mémoire Opérations “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)
10
Machine à accumulateur
Un registre spécifique (l’accumulateur) sert aux opérations. op1 op2 op3 se traduit par : 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 LOAD OP2 ADD OP3 STORE OP1
11
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)
12
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…
13
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)
14
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 : constante/registre Y bits : constante/adresse mémoire A
15
Ex: chargement de registre : 0x01
LD R5,# R5 reçoit la valeur 3 (adressage court immédiat) LD R5,R R5 reçoit le contenu de R3 (adressage court direct) LD R5,(R3) R3 désigne un mot de la mémoire, R5 reçoit le contenu de ce mot (indirect) LD.L R5,#0x3F R5 reçoit la valeur 0x3F24 (adressage long immédiat) F24 LD.L R5,0x3F R5 reçoit la valeur contenue dans le mot d’adresse 0x3F24 (adressage long direct) A150 3F24 LD.L R5,0x3F24(R3) 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
16
Opérations arithmétiques et logiques (1)
Addition : ADD, 0x03. Ex: ADD R2,#8 0328 Soustraction : SUB, 0x04. Ex: SUB R5,R9 2459 Logiques And : AND, 0x07. Ex AND R6,(R11) 476B Or : OR, 0x06. Ex: OR.L R12,MASK A6C01234 Xor: XOR, 0x08. Ex XOR.L R3,#0x Comparaison Compare: CMP, 0x05. CMP.L R7,MASK(R13) C57D1234
17
Opérations arithmétiques et logiques (2)
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
18
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 R [R0-R1] R0*R4 DIV R [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)
19
Exemple - 1 Calcul de C=(A+5)*(B-1)
A est à l’adresse 0x1020, B à l’adresse 0x1044, C en 0x1028 LD.L R0,A A ADD R0,# LD.L R2,B A SUB R2,# MUL R ST.L R1,C A Instruction Store, ST, 0x09 : “décharger un registre” Formats directs et indirects, courts et longs.
20
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 R F03 PC reçoit le contenu de R3 (adressage court direct) JMP (R3) F03 R3 désigne un mot de la mémoire, PC reçoit le contenu de ce mot (indirect) JMP.L #0x3F PC reçoit la valeur 0x3F24 (adressage long immédiat) 8F00 3F24 JMP.L 0x3F PC reçoit la valeur contenue dans le mot d’adresse 0x3F24 (adressage long direct) AF00 3F24 JMP.L 0x3F24(R3) 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
21
Branchements conditionnels
JEQ : jump si égal 0x1 JEQ R5 2F15 (saut si Z=1) JNE : jump si non égal 0x2 JNE R5 2F25 (saut si Z=0) JG : jump si supérieur 0x3 JGT R5 2F35 (Z=0 et S=0) JL : jump si inférieur 0x4 JLT R5 2F45 (S=1) JGE : supérieur ou égal 0x5 JGE R5 2F55 (S=0) JLE : inférieur ou égal 0x6 JLE R5 2F65 (Z=1 ou S=1) JC : saut si carry 0x8 JC R5 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)
22
Exemple - 2 Calcul de C=MAX(A,B)
A est à l’adresse 0x1020, B à l’adresse 0x1044, C en 0x1028, le code en0x LD.L R0,A A CMP.L R0,B A JGT 0x410 8F C LD.L R0,B A ST.L R0,C A
23
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
24
PGCD : le programme Code placé en 0x1000 TEST: CMP R2,R3 1000 2523
JEQ FIN F JLT SUITE F LD R0,R A 2103 LD R3,R C 2132 LD R2,R E 2120 SUITE: SUB R3,R JMP TEST F FIN:
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.