Plan du cours 1 Histoire de l’ordinateur 2 Présentation générale 3 Représentation interne des informations 4 Circuits logiques 5 Mémoires 6 Unité centrale de traitement 7 Assembleur 8 Introduction au langage MIPS 9 Entrées / sorties Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 181 / 238 Niveaux de programmation Langage machine Le programmeur a le choix entre différents langages (assembleur, Ada, Java, C, etc.). La machine ne comprends que le langage machine (i.e., instructions binaires) ! L’assembleur (i.e., langage d’assemblage) est le premier langage non binaire accessible au programmeur ; Code mnémoniques et symboles ; L’assembleur (i.e., programme traducteur) converti le langage d’assemblage en langage machine ; Permet d’exploiter au maximum les ressources de la machine ; Dépend de la machine. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 182 / 238 Traduction et interprétation Interprétation Conversion et exécution d’un programme en une seule étape : les instructions sont lues les unes après les autres et sont converties immédiatement en langage machine. Pas de programme objet intermédiaire ; Répétition du travail de traduction à chaque exécution (⇒ phase de développement). Traduction Génération d’un programme équivalent au programme source mais codé dans la langage binaire de l’ordinateur. Le programme obtenu en langage machine doit être ensuite chargé pour pouvoir être exécuté. Traduction réalisée une seule fois ; Exécution rapide et efficace (⇒ phase d’exploitation) ; 2 types : les assembleurs et les compilateurs. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 183 / 238 Traduction de langage évolué Programme C Compilateur prog. en langage d’assemblage prog. en langage machine Assembleur chargeur Mémoire Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 184 / 238 Langage d’assemblage Utilisés par les spécialistes ⇒ optimisation ; Pour valoriser l’architecture spécifique de la machine ; Diagnostic d’erreurs (i.e., examen du contenu de la mémoire) ; L’assembleur est une variante symbolique du langage machine ⇒ même jeu d’instructions ; Propre à chaque type de machine ; Permet d’accéder aux ressources de la machine (i.e., registres) ; Permet d’accéder aux facilités de traitement (e.g., décalage) ; Le programmeur peut utiliser : Codes mnémoniques (jeu d’instruction) ; Étiquettes (adresse symboliques) ; Littéraux (constante numériques) ; Directives (pseudo instruction). Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 185 / 238 Instruction en assembleur Structure d’une instruction étiquette code opération (mnémonique) opérandes + commentaires Exemples d’instructions donnees1 : adresse1 : DS MOVE ADD JUMP Clement Jonquet (Polytech’ Montpellier) 1 A1,donnees1 A1,A2 adresse2 # # # # Architecture des ordinateurs variable avec 1 mot mémoire transfère contenu addition saut inconditionnel IG3 2010-2011 186 / 238 Opérandes et étiquettes L’assembleur permet de donner des noms alphanumériques aux variables et aux étiquettes. ⇒ effectuer un branchement. L’assembleur permet de ne pas donner l’adresse binaire mais un nom aux opérandes. Chaque registre possède un nom reconnu par l’assembleur. Exemples d’opérandes et d’étiquettes Tab Dix Boucle : DS DC MOVE MOVE JUMP 1 10 Dix,A1 A2,Tab Boucle Clement Jonquet (Polytech’ Montpellier) # # # # # variable avec 1 mot mémoire constante 10 A1← valeur(Dix) Tab← valeur(A2) saut inconditionnel Architecture des ordinateurs IG3 2010-2011 187 / 238 Macro-instruction (1/2) Utiliser des directives pour isoler la séquence d’instruction que l’on veut éviter de répéter et lui attribuer un nom symbolique pour lui faire référence. L’assembleur remplace par la séquence correspondante. Étend le jeu d’instruction ; Programme plus simple et plus facile a modifier ; Calcul du cube d’un nombre MACRO MOVE MOVE MUL MUL MOVE ENDM CUBE (valeur, valeurcube) valeur,D1 valeur,D2 D1,D2 D1,D2 D2,valeurcube Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs #D2 := D1×D2 IG3 2010-2011 188 / 238 Macro-instruction (2/2) Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 189 / 238 Sous-programme (1/2) Définis comme les macros, mais leurs instructions constituent une entité bien séparée du programme principal. Cette séparation existe toujours après la traduction Présent une seule fois en mémoire ; Branchements traités lors de l’exécution ; Abstraction. Peut être utilisé par plusieurs programmes. Attention : Connaı̂tre les adresses des sous-programmes ; Sauvegarder l’adresse de retour ; Sauvegarder l’état de la machine (e.g., registre utilisés par le sous-programme). Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 190 / 238 Sous-programme (2/2) Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 191 / 238 Passage de paramètres avec une pile [Meynard00] Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 192 / 238 Passage de paramètres Un paramètre est une variable dont le nom est connu mais dont le contenu n’est précisé qu’au moment de l’exécution. C’est le passage des paramètres formels aux paramètres effectifs : fais lors de la traduction pour les macros (i.e., expansion) ; fais lors de l’exécution pour les sous-programmes. Passage par valeur Recopier la valeur des paramètres dans une zone connue des sous-programmes (e.g., mémoire ou registre). Le sous-programme ne travaille que sur une copie des paramètres (⇒ protection) Passage par référence Transmettre au sous-programme les adresses des paramètres. Le sous-programme travaille donc sur les données du programme appelant. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 193 / 238 Exemple de passage de paramètres [Meynard00] (1/2) La fonction mult est un sous-programme à 1 paramètre de retour réalisant la multiplication de 2 entiers positifs par additions successives. entierpositif mult(entierpositif x, entierpositif y) entierpositif i ; // inutile dans l’algo ! si x=0 alors retourne 0 ; sinon début i=y ; retourne mult(x-1,i)+y ; fin Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 194 / 238 Exemple de passage de paramètres [Meynard00] (2/2) Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 195 / 238 Fonctionnement de l’assembleur Traduction et passes La traduction nécessite généralement 2 passes à cause des références en avant i.e., référence à un symbole/étiquette non encore connus. Exemple de références en avant étiquette Boucle : code op. ---JUMP ------- opérande commentaire instruction quelconque Boucle La 1ère passe construit la table des symboles (nom, type, adresse) et alloue une adresse à chaque instruction (commençant à 0) ; La 1ère passe construit la table des références extérieures (i.e., appels à des sous-programmes) ; La 2ème passe génère les instructions en code machine. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 196 / 238 Environnement de programmation Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 197 / 238 Éditeur de liens Combine plusieurs programmes en langage machine en un seul programme complet et exécutable. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 198 / 238 Chargeur Charge le programme complet obtenu par l’éditeur de lien en mémoire centrale. Ajuste les adresses finales des instructions à l’aide de l’emplacement de chargement ; L’assembleur aide le chargeur en lu indiquant quels contenus d’instruction doit également être modifié ; Plus simple : utiliser un registre de base lors de l’exécution ! La question de l’amorçage Le chargeur est un programme indispensable pour charger les programmes en mémoire centrale et ainsi pouvoir le exécuter... mais qui charge le chargeur ? bootstrapping sur bande ou ROM ou disque spécial. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 199 / 238 Évolution schématique des langages Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2010-2011 200 / 238