mardi 22 juillet 2014

Les adresses [fr]

La mémoire de nos Amiga est une sorte de long tube d'une largeur de 32 bits. Plus vous en avez, et plus le tube est long. Attention, il y a en fait deux types de mémoire :
  1. La ram : peut être de la chipmem ou de la fastmem = le CPU peut lire et écrire dedans,
  2. La rom : Kickstart ou drivers spécifiques, le CPU ne peut que lire son contenu.

Afin de localiser telles ou telles données en mémoire, il faut obligatoirement qu'elles soient indiquées au CPU.

C'est exactement comme dans le vie réelle : au 17 rue des Ivrognes près de Lyon, habite un certain Wodk. Enfin sauf que les adresses en informatique sont des nombres hexadécimaux comme précisés sur cette photo.

Petit retour sur les leçons précédentes, nous avions appris en théorie qu'un mot long (32 bits) est fait de 4 octets (8 bit) :
  • 4 octets x 8 bits = 32 bits = un mot long

Ou alors qu'un mot long est fait de 2 mots :
  • 2 mots x 16 bits = 32 bits = un mot long

Ou encore qu'un mot est fait de 2 octets :
  • 2 octets x 8 bits = 16 bits = un mot

Et bien maintenant, vous en voyez sur cette photo "la représentation imagée" avec ce schéma de la structure mémorielle :

Alors, petite pause. Nous entrons dans le vif du sujet par un peu de théorie indispensable avant de débuter notre premier petit programme en assembleur. Rassurez-vous, tout va devenir plus clair avec un peu de pratique.

Chaque être humain est unique, certains vont comprendre en 5 minutes les leçons ici, alors que d'autres vont avoir besoin de beaucoup plus de temps : il n'y a aucune norme, chacun va a son rythme en fonction d'un tas de paramètres qui lui sont propres.

Vous avez ensuite besoin de "maturer" ces nouvelles informations, ou plutôt de les "relier" avec tout votre savoir actuel acquis au cours de votre vie. Patience, le temps fait son oeuvre. Revenez ici à l'établi de temps en temps afin d'ancrer à chaque fois un peu mieux tout ce nouveau savoir.


Pour continuer avec nos moutons, vous voyez que l'adresse $10000000 contient un long mot $10014880.

Prenez tout le temps nécessaire afin de bien comprendre qu'à l'adresse $10000000 se trouve une donnée qui est $10014880. Les adresses et les données sont deux choses différentes. Une adresse indique une donnée. Une adresse mémoire est une localisation, elle sert à trouver une donnée.

Avec cet exemple, il y a plusieurs lectures possibles :
  • A l'adresse $10000000.l = il y a $10014880.l
  • A l'adresse $10000000.b = il y a $10.b
  • A l'adresse $10000001.b = il y a $01.b
  • A l'adresse $10000002.b = il y a $48.b
  • A l'adresse $10000004.w = il y a $48C0.w

Concernant l'article précédent, et bien vous pouvez mettre soit des adresses ou soit des données dans les registres dx ou ax. Leurs différences vont bientôt vous être expliqué, évitons de mettre la charrue avant les boeufs...

Pour finir, sachez que les 68k sont Big Endian, c'est à dire que les données sont disposées dans le sens de la lecture (de gauche à droite donc). A l'adresse $10000000, nous lisons $10014880 en BE alors qu'en Little Endian (LE) ce serait $80480110.
 

2 commentaires: