Rappels d architecture



Documents pareils
Compilation (INF 564)

CM2 L architecture MIPS32

Jeu d instructions NIOS II

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

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Conception de circuits numériques et architecture des ordinateurs

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Structure d un programme

Exécution des instructions machine

ASR1 TD7 : Un microprocesseur RISC 16 bits

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

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

IV- Comment fonctionne un ordinateur?

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Architecture des Ordinateurs. Partie II:

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

Cours Informatique 1. Monsieur SADOUNI Salheddine

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation assembleur : aperçu

Représentation d un entier en base b

Microprocesseur + Logiciel

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

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Architecture des ordinateurs

Informatique Générale

Architecture matérielle des systèmes informatiques

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Architecture des Ordinateurs Première partie. Licence d Informatique - IUP Miage - FIIFO

Département informatique de l université d Angers

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

TP, première séquence d exercices.

UE Programmation Impérative Licence 2ème Année

I00 Éléments d architecture

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

Architecture de l ordinateur

Fonctionnement et performance des processeurs

Architecture des ordinateurs Introduction à l informatique

Présentation du cours

Concept de machine virtuelle

Traduction des Langages : Le Compilateur Micro Java

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

Cours 1 : La compilation

Structure de base d un ordinateur

V- Manipulations de nombres en binaire

Gestion mémoire et Représentation intermédiaire

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

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

2 Comment fonctionne un ordinateur, dans les grandes lignes

PIC : COURS ASSEMBLEUR

Représentation des Nombres

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007


UE C avancé cours 1: introduction et révisions

Ordinateurs, Structure et Applications

ACTIVITÉ DE PROGRAMMATION

Introduction à l informatique en BCPST

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Architecture des ordinateurs

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Programmation impérative

Conventions d écriture et outils de mise au point

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

Rappels Entrées -Sorties

Le langage C. Séance n 4

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

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

Algorithme. Table des matières

Claude Delannoy. 3 e édition C++

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

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Licence Sciences et Technologies Examen janvier 2010

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

Chapitre 10 Arithmétique réelle

Résumé Génération de code Le code intermédiaire

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d initiation à la programmation en C++ Johann Cuenin

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Initiation. àl algorithmique et à la programmation. en C

Cours d algorithmique pour la classe de 2nde

TP3 : Manipulation et implantation de systèmes de fichiers 1

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

Logiciel de Base. I. Représentation des nombres

Premiers pas sur l ordinateur Support d initiation

CH.3 SYSTÈMES D'EXPLOITATION

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

Logiciel de base. Première année ENSIMAG

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Cours 1 : Qu est-ce que la programmation?

Java Licence Professionnelle CISII,

Algorithmique et programmation : les bases (VBA) Corrigé

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Architecture : Circuits numériques et éléments d architecture

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

Méthodologie de la programmation

Transcription:

Assembleur

Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée utilisateur : clavier, souris sortie utilisateur : écran, imprimante processeur supplémentaire : GPU

Le processeur Le processeur lit et écrit des informations en mémoire Il peut de plus effectuer des opérations arithmétiques et logiques Chaque action qu il peut effectuer est appelée instruction Les instructions effectuées par le processeur sont stockées dans la mémoire. Il dispose d un petit nombre d emplacements mémoire d accès plus rapide, les registres. Un registre spécial nommé pc (program counter) contient l adresse de la prochaine instruction à exécuter De façon répétée le processeur : 1 lit l instruction stockée à l adresse contenue dans pc 2 l interprète ce qui peut modifier certains registres (dont pc) et la mémoire

CISC / RISC C est principalement le jeu d instruction qui distingue les processeurs Les processeurs CISC (Complex Instruction Set Computer) Nombre d instruction élevé Les instructions réalisent souvent les transferts vers et depuis la mémoire peu de registres Exemples : Intel 8068, Motorola 68000 Les processeurs RISC (Reduced Instruction Set Computer) Peu d instructions Les instructions opèrent sur des registres Registres nombreux Exemples :Alpha, Sparc, MIPS, PowerPC

Organisation de la mémoire paramètres de fonctions stack pointer pile et variables locales sp espace non alloué tas objets alloués dynamiquement global pointer données variables gobales gp program counter pc code

Organisation de la mémoire L organisation de la mémoire est conventionnelle En théorie toutes les zones sont accessibles de la même manière

Langage machine Une instruction de langage machine correspond à une instruction possible du processeur. Elle contient : un code correspondant à opération à réaliser, les arguments de l opération : valeurs directes, numéros de registres, adresses mémoire. code op opérandes

Langage machine Si on ouvre un fichier exécutable avec un éditeur (hexadécimal), on obtient... 01ebe814063727473747566662e6305f5f43544f525f4c 5f05f5f44544f525f4c4953545f5f05f5f4a43525f4c49 53545f5f05f5f646f5f676c6f62616c5f64746f72735f6 75780636f6d706c657465642e36353331064746f725f69...

Langage machine lisible Si on ouvre un fichier exécutable avec un éditeur (hexadécimal), on obtient... 01ebe814063727473747566662e6305f5f43544f525f4c 5f05f5f44544f525f4c4953545f5f05f5f4a43525f4c49 53545f5f05f5f646f5f676c6f62616c5f64746f72735f6 75780636f6d706c657465642e36353331064746f725f69... C est une suite d instructions comme 01ebe814, que l on peut traduire directement de façon plus lisible : add $t7, $t3, $sp C est ce qu on appelle l assembleur. L assembleur est donc une représentation du langage machine. Il y a autant d assembleurs que de type de processeurs différents.

MIPS processeur de type RISC sorti dans les années 1980, utilisé jusqu au début 2000 (PlayStation 2) utilisé en informatique embarquée émulateurs : spim en ligne de commande, qtspim en version graphique (préférable). mars implémentation en JAVA.

Exemple MIPS.data vars:.word 5.word 10.text start:la $t0, vars lw $t1, 0($t0) lw $t2, 4($t0) saut: bge $t1, $t2, exit move $a0, $t1 li $v0, 1 syscall addi $t1, $t1, 1 j saut exit: li $v0, 10 syscall On y trouve : des mots clefs :.data,.word,.text des instructions : lw, la, add, addi, bge... des registres : $t0, $t1, $t2 des étiquettes qui correspondent à des adresses : vars, saut,

Espace mémoire La zone de mémoire de données se déclare avec le mot-clef.data. C est là que l on stocke les variables. Le type des variables renseigne uniquement sur la place en mémoire de chaque variable : ce ne sont en réalité que des adresses. Le type.space indique simplement que l on réserve le nombre d octet indiqués (sans les mettre à zéro)..data c.byte a ; octet n1.halfword 26 ; 2 octets n2.word 353 ; 4 octets tab.space 40

Programme La zone mémoire du programme est signalée par le mot-clef.text..text start:la $t0, vars lw $t1, 0($t0) lw $t2, 4($t0) saut: bge $t1, $t2, exit move $a0, $t1 li $v0, 1 syscall addi $t1, $t1, 1 j saut exit: li $v0, 10 syscall On y lit : des instructions, des étiquettes (saut), c est-à-dire des adresses dans le code.

Registres Un processeur MIPS dispose de 32 registres de 4 octets chacun. On les distingue des étiquettes par le signe $. On travaillera principalement avec les suivants : numéro nom utilité 8-15, 24, 25 $t0-$t9 registres courants 31 $ra adresse de retour (après un saut) 29 $sp pointeur de haut de pile 0 $0 la valeur zéro 2, 3 $v0,$v1 appel et résultat de routines 4-7 $a0-$a3 arguments des routines

Instructions Trois types d instructions instructions de transfert entre registres et mémoire chargement sauvegarde instructions de calcul additions multiplications opérations logiques comparaisons sauvegarde instructions de saut sauts inconditionnels sauts conditionnels sauvegarde appels système

Chargement load word load immediate load address load byte load byte unsigned load halfword load halfword unsigned lw li la lb lbu lh lhu Ces instructions permettent de changer le contenu des registres

Chargement lw dest, adr charge dans le registre dest le contenu de l adresse adr lw dest,offset(base) ajoute offset octets à l adresse contenue dans le registre base pour obtenir une nouvelle adresse offset doit être une constante le mot stocké à cette adresse est chargé dans le registre dest li dest,const charge dans le registre dest la constante const la dest, adr charge dans le registre dest l adresse adr

Sauvegarde store word store halfword store byte move sw sh b move sw source, adr sauvegarde le registre source à l adresse adr sw source, offset(base) ajoute la constante offset à l adresse contenue dans le registre base pour obtenir une nouvelle adresse sauvegarde le registre source à cette adresse move dest, source sauvegarde le contenu du registre source dans le registre dest

Additions add add immediate add immediate unsigned add unsigned substract substract unsigned add addi addiu addu sub subu add r0, r1, r2 additionne le contenu des registres r1 et r2 et sauvegarde le résultat dans le registre r0 addi r0, r1, c additionne le contenu du registre r1 avec la constante c et sauvegarde le résultat dans le registre r0

Additions Les instructions add, addi et sub provoquent une exception du processeur en cas de dépassement de capacité. Une exception provoque un appel de procédure à un gestionnaire Les variantes non-signées addu, addiu et subu ne provoquent pas d exceptions.

Multliplications Multiply Multiply unsigned Divide Divide unsigned mult multu div divu mult r0, r1 multiplie le contenu des registres r0 et r1 Une multiplication de deux entiers à 32 bits peut prendre 64 bits. L opération mult sépare le résultat dans deux registres cachés Lo et Hi. On récupère la valeur avec les opérations mflo, mfhi (move from lo, hi). L opération de division utilise ces mêmes registres pour enregistrer le quotient (dans Lo) et le reste (dans Hi). div $t4, $t5 mflo $t2 ; t2 = t4 / t5 mfhi $t3 ; t3 = t4 % t5 mult $t4, $t5 mflo $t0 ; t0 = t4 * t5 si ce n est pas trop grand

Opérations logiques and and immediate nor or or immediate exclusive or exclusive or immediate and andi nor or ori xor xori and r0, r1, r2 effectue un et logique bit à bit du contenu des registres r1 et r2 et sauvegarde le résultat dans le registre r0 andi r0, r1, c effectue un et logique bit à bit du contenu du registre r1 et de la constante c et sauvegarde le résultat dans le registre r0

Comparaisons set less than set less than immediate set less than immediate unsigned set less than unsigned slt slti sltiu sltu slt r0, r1, r2 charge 1 dans le registre r0 si le contenu de r1 est inférieur à celui de r2, charge 0 sinon slti r0, r1, c charge 1 dans le registre r0 si le contenu de r1 est inférieur à la constante c, charge 0 sinon

Sauts inconditionnels Jump Jump and link Jump register Jump and link register j jal jr jalr j adr va à l adresse adr jal adr sauvegarde en plus $pc dans le registre $ra jr $t0 va à l adresse contenue dans le registre $t0 jalr $t0 sauvegarde en plus $pc dans le registre $ra

Sauts conditionnels Branch on equal Branch on not equal Branch on less than Branch on greater than Branch on less or equal than Branch on greater or equal than beq bne blt bgt ble bge beq r1, r2, adr si les contenus des registres r1 et r2 sont égaux, saute à l adresse adr

Appels système MIPS permet de communiquer avec le système de façon simple par la commande syscall. La fonction utilisée est déterminée selon la valeur de $v0. $v0 commande argument résultat 1 print int $a0 = entier à lire 4 print string $a0 = adresse de chaîne 5 read int $v0 = entier lu 8 read string $a0 = adresse de chaîne, $a1 = longueur max 10 exit

Et plus encore... Il reste des zones de MIPS que l on n utilisera pas : coprocesseur pour flottants exceptions (retenue de l addition, etc...) Voir la table de référence sur la page web du cours. Par exemple, on pourra utiliser l opération sll (shift left logical) pour multiplier les indices de tableau par 4 : add $t1, $t1, $t1 add $t1, $t1, $t1 sll $t1, $t1, 2

Compilation directe L assembleur est une version lisible du langage machine, mais on pourrait en écrire directement. add $t7, $t3, $sp Le registre $t0 est en fait le numéro 8, et $sp le numéro 29. Le code de l opération est ici coupé en deux : le premier (0) indique c est une opération arithmétique, le deuxième de quelle opération arithmétique précisément. op1 $t7 $t3 $sp (inutilisé) op2 000000 01111 01011 11101 00000 010100

Compilation directe L assembleur est une version lisible du langage machine, mais on pourrait en écrire directement. add $t7, $t3, $sp Le registre $t0 est en fait le numéro 8, et $sp le numéro 29. Le code de l opération est ici coupé en deux : le premier (0) indique c est une opération arithmétique, le deuxième de quelle opération arithmétique précisément. op1 $t7 $t3 $sp (inutilisé) op2 000000 01111 01011 11101 00000 010100 Soit, en hexadécimal, 01ebe814. On pourrait donc compiler directement un exécutable MIPS.

Pseudo-instructions Certaines opérations ne sont pas des opérations réelles, et ne peuvent pas être traduites directement. Par exemple, l instruction li (chargement d une valeur directe) doit être encodée sous une autre forme. li $t0, 12 ori $t0, $0, 12 C est toutefois une traduction mineure, que l on ferait si on produisait du code exécutable, mais qui n apporte pas grand-chose.

Références Cours d architecture de Peter Niebert : http://www.cmi.univ-mrs.fr/~niebert/archi2012.php Introduction au MIPS : http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm Table de référence du MIPS : http://pageperso.lif.univ-mrs.fr/~alexis.nasr/ens/compilation/mipsref.pdf Cours de compilation de François Pottier : http://www.enseignement.polytechnique.fr/informatique/inf564/