Adressage des opérandes

Documents pareils
Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Une version javascript sera disponible directement dans le cours prochainement.

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Programmation assembleur : aperçu

Représentation des Nombres

Conception de circuits numériques et architecture des ordinateurs

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

EXCEL PERFECTIONNEMENT CALCULS AVANCES

Logiciel de Base. I. Représentation des nombres

Rappels d architecture

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours Informatique 1. Monsieur SADOUNI Salheddine

Jeux de caracte res et encodage (par Michel Michaud 2014)

Rappels Entrées -Sorties

Représentation d un entier en base b

La mémoire. Un ordinateur. L'octet. Le bit

Le codage informatique

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

Introduction à NetCDF

Projet : PcAnywhere et Le contrôle à distance.

Conventions d écriture et outils de mise au point

TP Service HTTP Serveur Apache Linux Debian

Logiciel de base. Première année ENSIMAG

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

SYSTÈME DE GESTION DE FICHIERS

LA SAUVEGARDE DES DONNEES SUR LES ORDINATEURS PERSONNELS

V- Manipulations de nombres en binaire


Bases de programmation. Cours 5. Structurer les données

GPA770 Microélectronique appliquée Exercices série A

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Annexe : La Programmation Informatique

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Tout savoir sur le matériel informatique

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Structure du format BMP, sa lecture, sa construction et son écriture

IV- Comment fonctionne un ordinateur?

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours Informatique Master STEP

Chapitre 1 I:\ Soyez courageux!

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Version default Titre : Procédure POURSUITE Date : 07/04/2009 Page : 1/10 Responsable : Clé : U Révision : 496

MegaStore Manager ... Simulation de gestion d un hypermarché. Manuel du Participant

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Structure fonctionnelle d un SGBD

Recherche dans un tableau

IFT2880 Organisation des ordinateurs et systèmes

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Les opérations binaires

Architecture des ordinateurs Introduction à l informatique

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Traitement de texte : Quelques rappels de quelques notions de base

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Architecture des ordinateurs. Environnement Windows : sauvegarde

OPTENET DCAgent Manuel d'utilisateur

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Initiation à la programmation en Python

Conversion d un entier. Méthode par soustraction

Architecture des ordinateurs

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

IFT1215 Introduction aux systèmes informatiques

Partie 7 : Gestion de la mémoire

modélisation solide et dessin technique

Chapitre 4 : Les mémoires

CHAPITRE VIII : Les circuits avec résistances ohmiques

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

TP 1. Prise en main du langage Python

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Code_Aster. Procédure IMPR_RESU aux formats 'RESULTAT' et 'ASTER' 1 But

DI GALLO Frédéric ADSL. L essentiel qu il faut savoir. PPPOE PPPT Netissi

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

Une protection antivirus pour des applications destinées aux dispositifs médicaux

CPLN 20/08/2009 MBO Service ICT et Pédagogie

Chap III : Les tableaux

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

Crédit photos : internet. Questions et réponses

POLITIQUE DE GESTION DES DOCUMENTS ADMINISTRATIFS

Généralités sur le Langage Java et éléments syntaxiques.

Faire fonctionner symfony sous wamp et windows avec des vhost. Installation de wamp

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

Fascicule u7.05 : Impression de résultat pour visualisation

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

Aperçu de la sauvegarde sous Windows 7

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Codage d information. Codage d information : -Définition-

1/6. L icône Ordinateur

Module BD et sites WEB

Chapitre 4 : les stocks

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Informatique Générale

Solutions informatiques

Programmation impérative

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Transcription:

Organisation des ordinateurs et assembleur Chapitre 6 Bien que nous ayons parlé d'adressage des opérandes et que nous ayons utilisé des opérandes dans ce qui précède, la question de l'adressage et des opérandes doit être examinée d'un point de vue plus global. C'est ce que nous proposons de faire ici. Notons qu'en langage de programmation évolué cette question n'est pas considérée, car le compilateur s'en occupe automatiquement. Nous avons déjà mentionné l'adressage des opérandes au chapitre 3 (section 3.7). Nous y avons en particulier fait la différence entre l'adresse relative et l'adresse absolue d'un opérande. Rappelons ici que l'assembleur attribue aux instructions et aux données du programme des adresses relatives; ces adresses sont ainsi appelées car elles sont relatives au début du programme, l'adresse attribuée par l'assembleur au premier élément (instruction ou donnée) du programme étant égale à zéro et les adresses suivantes étant attribuées de façon séquentielle. Ainsi, si nous assemblons successivement trois programmes (ou sous-programmes) différents qui doivent fonctionner ensemble, chaque programme sera assemblé à partir de l'adresse zéro. Lorsqu'on veut charger les trois programmes en mémoire, en supposant même que la mémoire soit libre à partir de l'adresse zéro, on se rend compte qu'au moins deux des programmes ne pourront être chargés à partir de l'adresse 0. Les adresses réelles que leurs instructions et leurs données occuperont sont appelées leurs adresses absolues. Donc, pour au moins deux de nos programmes, les adresses absolues seront différentes des adresses relatives. En général, ceci sera vrai pour tout programme chargé en mémoire, car les premières adresses de la mémoire centrale sont toujours occupées par une partie du système d'exploitation. Le travail du chargeur sera plus ou moins complexe selon l'ordinateur et le système d'exploitation considéré. Nous avons vu en effet que de nombreux ordinateurs sont tels que les adresses des opérandes sont situées dans les instructions elles-mêmes. On voit donc qu'au moment du chargement toutes les adresses relatives apparaissant dans des instructions doivent être modifiées par addition d'une valeur fixe qui est l'adresse de chargement du début du programme. Par contre, pour les anciens ordinateurs Macintosh, basés sur le processeur Motorola MC68000, le système d'exploitation utilisait un système d'adressage différent; les instructions ne comprenaient que les adresses relatives des opérandes et ce n était qu'au moment de l'exécution d'une instruction que l'adresse relative de son opérande était transformée en adresse absolue. Quels que soient les ordinateurs utilisés, les programmes objets produits par les assembleurs sont faits pour fonctionner une fois chargés à n'importe quel endroit de la mémoire: on dit que ce sont des programmes translatables. L'adresse mémoire effective est l'adresse qui est effectivement utilisée au moment de l'exécution de l'instruction. Quelquefois cette adresse est la même que celle qui apparaît dans l'instruction, mais ce n'est généralement pas le cas. Cette adresse peut être modifiée de plusieurs façons au moment de l'exécution selon les divers modes d'adressage utilisés qui sont présentés ci-dessous. 2009 Ph. Gabrini 51

Organisation des ordinateurs et assembleur 6.1 Adressage immédiat Dans ce mode d'adressage un opérande se trouve dans l'instruction elle-même. On obtient l'opérande sans avoir à faire un accès supplémentaire à la mémoire puisque ce dernier fait partie intégrante de l'instruction, d'où le qualificatif immédiat. Les instructions ci-dessous utilisent ce mode d'adressage : LDA 456,i ; placer la valeur décimale 456 dans le registre A CPA '*',i ; comparer A au code ASCII d un astérisque où la valeur à déplacer ou à utiliser fait partie intégrante de l'instruction, comme le montre la figure 6.1. Figure 6.1 Instruction avec adressage immédiat 6.2 Adressage direct L'adressage direct est sans doute le mode d'adressage le plus souvent utilisé et est très simple. Dans ce mode, le champ opérande de l'instruction contient l'adresse effective de l'opérande et on doit faire un accès à la mémoire pour obtenir ce dernier. C'est le mode d'adressage le plus répandu; il n'est cependant et à toute fin pratique pas utilisé avec des adresses absolues, sauf dans des cas très particuliers où l'on doit nécessairement utiliser des adresses absolues, comme par exemple: LDA 0x2340,d ; prendre le contenu des octets à l adresse hexa 2340 instruction illustrée par la figure 6.2. Les adresses absolues utilisées doivent être inférieures à l'adresse maximum possible pour l'ordinateur utilisé et on doit savoir ce qu'elles signifient! Malheur à vous, si l adresse n est pas la bonne! En fait, l utilisation normale est plutôt semblable à ce qui suit, où le symbole est remplacé dans l instruction machine par son adresse : LDA val,d ; prendre la valeur de la variable val Adresse opérande Figure 6.2 Instruction avec adressage direct 52 2009 Ph. Gabrini

Organisation des ordinateurs et assembleur 6.3 Adressage basé Le mode d'adressage basé est un mode d'adressage relatif: dans les instructions les opérandes sont repérés par des adresses relatives. Ces dernières sont utilisées au moment de l'exécution avec le contenu d un registre de base pour déterminer les adresses effectives des opérandes. L'adresse effective de l'opérande est calculée au moment de l'exécution de l'instruction par addition du contenu du registre de base à l'adresse relative de l'opérande située dans l'instruction (souvent appelée déplacement): adresse effective = adresse de base + déplacement Le calcul de l'adresse effective est fait dynamiquement à l'exécution de chaque instruction ayant un opérande mémoire. Il importe alors que le registre de base contienne bien l'adresse de base correspondant à la zone de données du programme. Selon les ordinateurs on notera qu'un registre de base peut devoir être nécessairement un registre adresse, ou comme sur PEP 8 il n y a pas de registre de base et où l adressage basé est en fait similaire à l adressage indexé (voir plus bas). La figure 6.3 illustre le calcul de l'adresse effective d'un opérande repéré par la quantité hexadécimale 01AC sur un ordinateur Macintosh (version 68000). Selon les conventions de ce Macintosh le registre de base est le registre d adresse A5, s il contient la valeur C6454, l'adresse effective est alors: C6454 + 01AC = C6600 R B Adresse relative opérande C6454 + 1AC C6600 Figure 6.3 Calcul de l'adresse effective d'un opérande avec registre de base Le mode d'adressage basé présente, par rapport aux autres modes d'adressage, des avantages et des inconvénients. L'inconvénient principal est que ce mode d'adressage est plus difficile à apprendre; un second inconvénient est que le contenu des registres de base est essentiel au bon fonctionnement du programme et que toute modification intempestive de ces registres conduit à la catastrophe. Parmi les avantages, notons le fait que les programmes écrits dans ce mode sont automatiquement translatables, on peut les transférer d'un endroit de la mémoire à un autre sans pour autant modifier les adresses des opérandes, seuls les contenus des registres de base devront être modifiés. On notera aussi comme avantage le fait que le couple base-déplacement peut être défini avec un nombre de bits inférieur à une adresse complète. Enfin si l'on doit effectuer des modifications d'adresse, ceci se fait facilement par modification du registre de base correspondant. 2009 Ph. Gabrini 53

Organisation des ordinateurs et assembleur 6.4 Adressage indexé Ce mode d'adressage est semblable au mode d'adressage basé. Le calcul de l'adresse effective de l'opérande d'une instruction consiste encore à ajouter à l'adresse de l'opérande le contenu d'un registre d'index. Dans ce cas le calcul de l'adresse effective peut alors être résumé par: adresse effective = adresse de base + contenu du registre d'index. L adresse de base est située dans l instruction. Contrairement au registre de base dont la valeur reste généralement constante au cours de l'exécution d'un programme, le registre d'index prend des valeurs diverses au cours de l'exécution. On s'en sert en fait surtout comme d'un indice pour accéder aux valeurs d'une table. La figure 6.4 illustre le calcul de l'adresse effective de l'opérande pour l'instruction PEP 8: LDA Vecteur,x ; prendre Vecteur[x] qui charge dans A le contenu d'un opérande défini avec indexation par le registre X que l'on supposera contenir la valeur décimale 22A (obtenue par LDX 0x22A,i) et par l adresse de base Vecteur (3246) L'adresse effective de l'opérande sera donc de: 3246 + 22A = 3470 Adresse de base Registre d index (déplacement) 22A + 3246 3470 Figure 6.4 Calcul de l'adresse effective de l'opérande 6.5 Adressage indirect Dans ce mode d'adressage, le champ adresse de l'instruction ne contient plus l'adresse de l'opérande, mais l'adresse d'une position mémoire qui, elle, contient l'adresse de l'opérande. Certains ordinateurs possèdent un mécanisme d'indirection, c'est le cas de PEP 8; d autres n en possèdent pas, encore qu'une indirection soit possible par l'intermédiaire des registres. Dans le cas des ordinateurs qui permettent l'indirection, certains sont tels que chaque cellule mémoire possède un indicateur d'indirection, ce qui rend possible les indirections à plusieurs niveaux. Les indirections à plusieurs niveaux peuvent être comparées à ce qui arrive lorsque vous arrivez dans une grosse compagnie et que vous cherchez à rencontrer Monsieur Aristide; vous vous adressez à la réception qui vous envoie au bureau de Monsieur Xénophon, le bureau de Monsieur Xénophon vous renvoie au bureau de Monsieur Yves, le bureau de Monsieur Yves vous renvoie au bureau de Monsieur Zacharie où vous trouvez Monsieur Aristide. La figure 6.5 illustre d'une part l'indirection simple et d'autre part une indirection à deux niveaux. 54 2009 Ph. Gabrini

Organisation des ordinateurs et assembleur Instruction Instruction * Instruction * Adr. Opér. * Adr. opérande Adr. opérande * indicateur d indirection Adressage direct Adressage indirect simple Adressage indirect double Figure 6.5 Adressage direct et indirect La figure 6.6 représente l adressage indirect simple de Pep 8. L indicateur d indirection dans une instruction est la lettre n, comme par exemple : LDA pointeur,n ; pointeur contient l adresse de l opérande Adresse de l adresse de l opérande Adr. opérande Figure 6.6 Adressage indirect Supposez que vous disposiez d une variable pointeur qui comprenne l adresse d une variable dynamique entière obtenue par un appel à l allocateur new. En C++ vous auriez écrit les instructions suivantes pour déclarer le pointeur, obtenir l espace mémoire pour la variable dynamique et accéder à la valeur de la variable ainsi repérée. 2009 Ph. Gabrini 55

Organisation des ordinateurs et assembleur int *pointint = new int;.. *pointint = 31415; Pour faire la même chose en assembleur, vous devez disposer d un sous-programme new (voir le chapitre 9) et utiliser l indirection pour atteindre la variable dynamique repérée par le pointeur. pointint:.block 2 ; variable pointeur.. LDA taille,i ; [taille mémoire requise] STA -2,s ; LDA pointint,i ; [adresse du pointeur] STA -4,s ; SUBSP 4,i ; CALL new ; place adresse dans pointint.. LDA 31415,i ; valeur à affecter STA pointint,n ; *pointint = 31415 6.6 Adressage sur la pile Il existe une structure de mémoire spéciale utilisée par les divers logiciels fonctionnant sur un processeur donné. Il s agit de la pile : c est un bloc de mémoire alloué spécifiquement par le système d exploitation et utilisé par les logiciels. Au niveau de la programmation en assembleur, la pile est utilisée essentiellement pour gérer les appels à des sous-programmes et aussi pour l allocation de mémoire aux sous-programmes. Ceci sera vu en détail au chapitre 9 qui présente les sous-programmes, car, en l absence de sous-programmes, il n y a aucune nécessité d utiliser la pile. 6.7 Exercices 6.7.1 Si le registre A5 d un Macintosh contient la valeur hexadécimale 201AE, calculer le déplacement nécessaire pour composer l'adresse relative du mot d'adresse absolue hexadécimale 20592 en utilisant le registre A5 comme registre de base. 6.7.2 Si la variable Vecteur est située à l adresse 125A et si le registre X contient la valeur hexadécimale 123, quelle sera l'adresse effective de l'opérande de l'instruction suivante? LDA Vecteur,x 6.7.3 L'adressage indirect multiple n'existe pas dans les ordinateurs PEP 8; on peut cependant le réaliser en utilisant le registre X. En supposant que la variable Point contienne l'adresse de l'opérande (premier niveau) de la figure 6.5 (adressage indirect double), donner les instructions permettant de placer l'opérande dans le registre A. 56 2009 Ph. Gabrini