- Mode d'adressage
-
Les modes d'adressages sont un aspect de l'architecture des processeurs et de leurs jeux d'instructions. Les modes d'adressages définis dans une architecture régissent la façon dont les instructions en langage machine identifient leurs opérandes. Un mode d'adressage spécifie la façon dont est calculée l'adresse mémoire effective d'un opérande à partir de valeurs contenues dans des registres et de constantes contenues dans l'instruction ou ailleurs dans la machine.
En programmation informatique, les personnes préoccupées par les modes d'adressage sont principalement celles qui programment en assembleur et les auteurs de compilateurs.
Sommaire
Modes d'adressage pour le code
L'adresse de la prochaine instruction à exécuter est contenue dans un registre spécial du processeur, appelé compteur ordinal (CO) ou compteur de programme. Les instructions de branchement (ou de saut) visent à modifier la valeur du compteur ordinal. Cette valeur est l'adresse effective de l'instruction de branchement ; elle est calculée différemment selon le mode d'adressage choisi.
Adressage absolu
En adressage absolu, l'adresse de destination est donnée dans l'instruction ; on peut donc se rendre n'importe où dans la mémoire (programme). Au moment du branchement, le contenu du pointeur de programme est remplacé par l'adresse en question (si le branchement concerne un sous-programme, on sauvegarde le contenu du pointeur de programme).
Adressage relatif
Comme de nombreux branchements s'effectuent vers des adresses mémoire proches de l'endroit où l'on se trouve au moment d'exécuter le branchement, on peut se contenter d'indiquer un décalage par rapport à l'adresse de la prochaine instruction. Par exemple si l'on exécute du code à l'adresse 0x42 et que l'on veut brancher 8 octets plus loin, on peut simplement indiquer +8 pour brancher à 0x4A au lieu de devoir calculer cette adresse.
Modes d'adressage pour les données
De nombreuses instructions font référence à des données se trouvant à différents endroits du processeur : registres, mémoire, ports d'E/S.
Adressage implicite
Certaines opérations ne peuvent être réalisées que sur une donnée se trouvant en un endroit bien précis du processeur (par exemple, l'accumulateur ou la pile). Dans ce cas, il n'est pas nécessaire de spécifier l'adresse du registre en question et on parle d'adressage implicite.
Adressage registre ou inhérent
Le processeur dispose d'un certain nombre de registres de travail. De nombreuses instructions y font référence ; vu leur nombre peu élevé (8, par exemple), il suffit d'un petit nombre de bits pour spécifier le registre désiré (3 dans notre cas). On parle dans ce cas d'adressage registre ou inhérent.
Adressage direct
Dans ce mode d'adressage, on donne l'adresse de la donnée en mémoire (RAM, ROM ou port d'E/S s'il est intégré à la mémoire). Ce mode d'adressage permet d'indiquer n'importe quel endroit dans la mémoire, le prix à payer étant que l'on doit spécifier l'adresse concernée dans son intégralité.
Adressage immédiat
C'est un peu un abus de langage que de parler d'adressage dans ce cas-ci. En effet, la donnée suit tout simplement l'instruction.
Adressage indirect à registre
Dans ce mode d'adressage, l'adresse de la donnée se trouve dans un registre spécial du processeur (du même nombre de bits que son bus d'adresses), le pointeur de données. L'avantage, par rapport à l'adressage direct, est que l'adresse peut être manipulée commodément, par exemple pour accéder à une suite de données consécutives en mémoire. Ceci est particulièrement utile lorsqu'on manipule des données stockées dans un tableau.
Adressage indexé
Ce mode est assez semblable à l'adressage indirect à registre. Il fait appel à un registre spécial appelé « registre d'index ». Deux registres d'index sont particulièrement bienvenus lorsqu'il s'agit de déplacer un bloc de données dans la mémoire RAM.
Wikimedia Foundation. 2010.