gestion de données
Transcription
gestion de données
Chapitre 3 Gestion des données Langage d'assemblage Description de la mémoire La mémoire peut être vue comme un ensemble de cases consécutives Une case contient 8 éléments binaires (8 bits, 1 octet, 1 byte) Chaque case est numérotée (on parle d'adresse, @ en abrégé) 3.1 La Mémoire Structuration de la mémoire Les octets peuvent être regroupés 1 octet (valeur 8 bits, octet) 2 octets (valeur 16 bits, mot) 4 octets (valeur 32 bits, mot long) 3.1 La Mémoire Accès à la mémoire MOVE.B : accès valeur 8 bits MOVE.W : accès valeur 16 bits MOVE.L : accès valeur 32 bits 3.1 La Mémoire Adresse des mots L'adresse d'un mot (ou mot long) est l'adresse de l'octet qui a la plus faible adresse Exemple: 3.1 La Mémoire n°0 n°1 n°2 n°3 n°4 n°5 n°6 n°7 adresse du mot? Quelle est l'adresse d'un mot (long) si : l'adresse du mot (long) suivant est $1010 l'adresse du mot (long) précédent est $1010 il est le dernier mot (long) d'un bloc de 16 octets commençant à l'adresse $1000 3.1 La Mémoire Stockage des valeurs dans la mémoire Little Endian et Big Endian Ces termes proviennent d'un roman satyrique écrit au 18e siècle par Jonathan Swift: les voyages de Gulliver. Le monde se divisait en deux groupes: Ceux qui mangeaient les œufs en commençant par le gros bout Ceux qui mangeaient les œufs en commençant par le petit bout 3.1 La Mémoire Stockage des valeurs dans la mémoire Little Endian et Big Endian Ces termes proviennent d'un roman satyrique écrit au 18e siècle par Jonathan Swift: les voyages de Gulliver. Le monde se divisait en deux groupes: Ceux qui mangeaient les œufs en commençant par le gros bout Ceux qui mangeaient les œufs en commençant par le petit bout 3.1 La Mémoire Stockage des valeurs dans la mémoire Sur certains processeurs (Motorola, RISC, …) on utilise le mode "bigendian". On commence par ranger le gros bout ("big end", poids forts ) en mémoire à l'adresse la plus faible. Sur d'autres processeurs (Pentium, …) on utilise le mode "little-endian". On commence par ranger le petit bout ("little-end", poids faibles) en mémoire à l'adresse la plus faible 3.1 La Mémoire Avantages "big-endian" "littleendian" •En « big-endian" les valeurs sont difficiles à lire quand on examine la mémoire. Le mode "big-endian" est plus logique pour l'utilisateur. •En « little-endian » on trouve les poids faibles aux adresses les plus faibles Ce mode est plus logique pour le processeur. Exemple: $89ABCDEF 3.1 La Mémoire Exercices "big-endian" (cas Motorola) Valeur 16 bits $AB2F à l'adresse $1000 Valeur 32 bits $FE125DA1 à l'@ $1002 Valeur 32 bits $C3 à l'@ $1001 Valeur 8 bits $2 à l'@$1000 3.1 La Mémoire Schéma (Motorola 68000) 8 registres de données Unité de calcul 8 registres d'adresses Reg SR Registre PC 3.2 Le processeur Unité de calcul Addition, Soustraction Multiplication, Division Négation Et, Ou, Ou exclusif Non ... 3.2 Le processeur Registres Mémoire interne du processeur Le processeur dispose de quelques mots longs de mémoire pour ranger les résultats des calculs intermédiaires 16 mots longs 32 bits 3.2 Le processeur Registres de données (D0, D1, … , D7) 8 registres 32 bits Peuvent être vus comme des registres 8, 16 ou 32 bits. Les zones modifiables sont: bits 0..7 (opération .B) bits 0..15 (opération .W) bits 0..31 (opération .L) 3.2 Le processeur Traitement d'une instruction (exemple) D0 D1 D2 D3 Unité de calcul ... Registre SR Registre PC ADD.L D3,D1 3.2 Le processeur Traitement d'une instruction (exemple) D0 D1 D2 D3 Copie D3 Unité de calcul ... Registre SR Registre PC ADD.L D3,D1 3.2 Le processeur étape 1: ouvrir sortie D3 et entrée gauche unité de calcul Traitement d'une instruction (exemple) D0 D1 D2 D3 Copie D3 Unité de calcul ... Registre SR Registre PC ADD.L D3,D1 3.2 Le processeur étape 2: fermer sortie D3 et entrée gauche unité de calcul Traitement d'une instruction (exemple) Copie D3 Copie D1 Unité de calcul D0 D1 D2 D3 ... Registre SR Registre PC ADD.L D3,D1 3.2 Le processeur étape 3: ouvrir sortie D1 et entrée droite unité de calcul Traitement d'une instruction (exemple) Copie D3 Copie D1 Unité de calcul D0 D1 D2 D3 ... Résultat addition Registre SR Registre PC ADD.L D3,D1 3.2 Le processeur étape 4: fermer sortie D1 et entrée droite unité de calcul Traitement d'une instruction (exemple) Copie D3 Copie D1 Unité de calcul D0 D1 D2 D3 ... Résultat addition Registre SR Registre PC ADD.L D3,D1 3.2 Le processeur étape 5: ouvrir sortie unité de calcul et entrée D1 Traitement d'une instruction (exemple) Copie D3 Copie D1 Unité de calcul D0 D1 D2 D3 ... Résultat addition Registre SR Registre PC ADD.L D3,D1 3.2 Le processeur étape 6: fermer sortie unité de calcul et entrée D1 Exercice registre de données MOVE.L #$AABBCCDD,D3 MOVE.B #$99,D3 MOVE.W #$88,D3 Trouver la valeur de D3 3.2 Le processeur Les bits 8..31 ou les bits 16..31 peuvent rester inchangés Registres d'adresses (A0, A1,.., A7) 8 registres 32 bits Ils sont toujours utilisés comme des registres 32 bits (une adresse s'exprime toujours sur 32 bits) Les opérations de type MOVE.B sont interdites 3.2 Le processeur Le registre compteur ordinal (PC) Contient l'adresse de l'instruction courante Ce registre est automatiquement incrémenté après l'exécution d'une instruction (exécution séquentielle) Certaines instructions provoquent des modifications de PC (BRA) 3.2 Le processeur Le registre statut (SR) Status Register Décrit le mode de fonctionnement et l'état du processeur 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 T 0 S 0 0 I2I1I0 0 0 0 X N Z V C k Octet superviseur Octet utilisateur CCR 3.2 Le processeur Octet utilisateur SR (CCR) C (retenue, carry) V (dépassement, overflow) Z (zéro) N (négatif) X (extension) Renseigne sur l'état du processeur après l'exécution d'une instruction arithmétique ou logique 3.2 Le processeur Exercice CCR MOVE.B #$FF,D2 ADD.B #1,D2 MOVE.B #127,D2 ADD.B #1,D2 3.2 Le processeur Trouver la valeur de N, Z, V, C Exercice CCR MOVE.B #$FF,D2 N=1 ADD.B Z=0 #1,D2 MOVE.B #127,D2 V=0 ADD.B C=0 #1,D2 3.2 Le processeur Exercice CCR MOVE.B #$FF,D2 N=0 ADD.B Z=1 #1,D2 MOVE.B #127,D2 V=0 ADD.B C=1 #1,D2 3.2 Le processeur Exercice CCR MOVE.B #$FF,D2 N=0 ADD.B Z=0 #1,D2 MOVE.B #127,D2 V=0 ADD.B C=0 #1,D2 3.2 Le processeur Exercice CCR MOVE.B #$FF,D2 N=1 ADD.B Z=0 #1,D2 MOVE.B #127,D2 V=1 ADD.B C=0 #1,D2 3.2 Le processeur Les instructions de branchement BEQ (branchement si = 0) EQual BNE (branchement si != 0) Not Equal BGT (branchement si > 0) Greater Than BGE (branchement si >=0) Greater or Equal BLT (branchement si < 0) Less Than BLE (branchement si <= 0) Less or Equal 3.2 Le processeur Exercice Trouver comment les instructions BEQ, BNE, BGT, BGE, BLT, BLE utilisent les codes conditions. 3.2 Le processeur Solution exercices BEQ : Z BNE : Z BGT : N.V.Z+N.V.Z BGE : N.V+N.V BLT : N.V+N.V BLE : Z+N.V+N.V 3.2 Le processeur