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

Documents pareils