CM2 L architecture MIPS32

Dimension: px
Commencer à balayer dès la page:

Download "CM2 L architecture MIPS32"

Transcription

1 CM2 L architecture MIPS32 Olivier Marchetti (CM-TD-TP) Alexandre Brière (TD-TP) Laboratoire d informatique de Paris 6 Pôle SoC UPMC Année

2 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Question du jour : comment programmer un ordinateur? Comment parler avec quelqu un d aussi binaire qu un ordinateur? Soit en binaire ou alors... avoir un traducteur! UNIX, l assembleur et C Comme tout SE de l époque, UNIX fut écrit en assembleur. Dennis Ritchie dévellopa le C au début des années 70. UNIX fut réécrit en C en 1972! L oeuf et la poule Qui compile le compilateur? Comment est écrit le compilateur? Comment concevoir un langage de haut niveau?... Olivier Marchetti CM2 L architecture MIPS32 Année / 36

3 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Question du jour : comment programmer un ordinateur? Comment éviter de programmer en langage machine? En utilisant le langage assembleur de l architecture. X Plus aucune variable = orchestrer un va-et-vient entre CPU et RAM. X Plus aucun type = organiser en mémoire les données. X Plus aucune structure de contrôle ou structure de données = les réinventer en jouant avec des étiquettes assembleurs. 32 registres utilisateur de 32 bits chacun octets adressables. Des registres dédiés (notamment pour les flottants) Quelques conventions pour la mémoire. Etiquetter des portions du code assembleur. Des instructions de branchement. Des instructions de saut. Programmer en ensembleur... ou se substituer au compilateur Savoir précisément où écrire, où lire. Savoir décomposer tous les traitements. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

4 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Présentation du MIPS32 Généralités MIPS Microprocessor without Interlocked Pipeline Stages Architecture étudiée dans cette UE... made in Stanford! Architecture Premier CPU en ou 64 bits. Architecture sous licence... PS2, PSP, Nintendo, Jeu d instructions Type RISC (Reduced Instruction Set Computer ). Taille fixe pour les instructions. Pipeline instructions (cf. dernier CM). Facile à apprendre (régulière), suffisamment général, intéressant. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

5 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Plan 1 Instructions MIPS Instructions arithmétiques Instructions logiques Instructions de transfert de données Instructions avec constantes Instructions de branchement 2 Structure de contrôle en MIPS Structure de contrôle if... then... Structure de contrôle if... then... [else] Structure de contrôle while Structure de contrôle for 3 Données en MIPS Déclarer et définir des variables Convention sur les registres 4 Entrée/Sortie en MIPS Olivier Marchetti CM2 L architecture MIPS32 Année / 36

6 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Programmation C vs. Programmation MIPS Pour bien programmer, de quoi avons-nous besoin? 1 Réaliser des calculs (arithmétiques ou logiques). Olivier Marchetti CM2 L architecture MIPS32 Année / 36

7 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : opérations arithmétiques Quelles sont les instructions arithmétiques du MIPS? Soient les désignations de registres $d, $s, $t. Addition add add $d, $s, $t Soustraction sub sub $d, $s, $t Au niveau registre : add $d, $s, $t $d $s + $t Au niveau registre : sub $d, $s, $t $d $s - $t Multiplication mult mult $s, $t # résultat sur 64 bits Division div div $s, $t Un registre 64 bits découpé en deux champs 32 bits (notés Hi et Lo) : mult $s, $t Hi pref 32($s * $t) Lo suff 32($s * $t) Un registre 64 bits découpé en deux champs 32 bits (notés Hi et Lo) : div $s, $t Hi $s % $t Lo $s / $t Remarque Pour les grandeurs non-signée (syntaxe identique) : addu, subu, multu, divu Olivier Marchetti CM2 L architecture MIPS32 Année / 36

8 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : calculer une expression arithmétique Comment traiter une expression arithmétique C? Soit l instruction C suivante : (a + b) - (c + d); Supposons que nous ayons quatre registres avec l affectation suivante : Comment procéder au calcul? aff. reg. val. var. prog. $reg 1 a $reg 2 b $reg 3 c $reg 4 d Tout décomposer. Gérer la ressource registre. Veiller à la cohérence du calcul. Possibilité d utiliser d autres registres... mais 32 registres c est peu. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

9 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : opérations logiques Quelles sont les instructions logiques du MIPS? Soient les désignations de registres $d, $s, $t. Opérations logiques de base : AND (bit-à-bit) and and $d, $s, $t Au niveau registre : and $d, $s, $t $d $s & $t OR (bit-à-bit) or or $d, $s, $t Au niveau registre : or $d, $s, $t $d $s $t XOR (bit-à-bit) xor xor $d, $s, $t Au niveau registre : xor $d, $s, $t $d $s ^ $t NOR nor nor $d, $s, $t Au niveau registre : nor $d, $s, $t $d ($s $t) Comparaison de deux entiers : inférieur à slt (set on less than) Au niveau registre : slt $d, $s, $t slt $d, $s, $t $d ($s < $t) Olivier Marchetti CM2 L architecture MIPS32 Année / 36

10 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Programmation C vs. Programmation MIPS Pour bien programmer, de quoi avons-nous besoin? 1 Réaliser des calculs (arithmétiques ou logiques). 2 Effectuer des transferts de données. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

11 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : transferts de données principes (1/4) Comment contourner la limite des 32 mots registres? 2 32 octets 4Go! organiser un va-et-vient registres/ram Haut-niveau : l abstraction variable dispense le programmeur de réfléchir à la localisation réelle des données. Assembleur : la localisation des données est inévitable. CPU mot 2 1 mot 2 2 Pour charger (resp. décharger) un registre depuis la RAM (resp. vers la RAM), il faut spécifier : une adresse de base C (début de la zone mémoire voulue), une valeur de décalage (l index, stocké dans $s), le registre contenant (resp. recevant) la donnée. L adresse d écriture/lecture en RAM sera : Remarques RAM[$s + C] Le registre $s indique la granularité de la donnée à charger (i.e. un multiple de quelques octets). Par défaut, un transfert RAM registre copie quatre octets. $Reg C valeur de $s valeur de $s Contient données/programmes Entièrement adressée (par octet) Formée de mots = la RAM n est qu un grand tableau. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

12 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : transferts de données syntaxe (2/4) Instructions MIPS pour les transferts registres/mémoire : Chargement d un registre lw (load word) lw $t, C($s) CPU mot 2 1 mot 2 2 Au niveau registre/ram : lw $t, C($s) $t RAM[$s + C] $Reg C Déchargement d un registre sw (store word) sw $t, C($s) Au niveau registre/ram : sw $t, C($s) RAM[$s + C] $t valeur de $s valeur de $s C désigne une constante sur 16 bits, alors que $s est sur 32 bits. Remarques Traiter des mots de taille moindre (syntaxe identique) : lh, sh : charge / décharge un 1 /2-mot (load/store half ), lb, sb : charge / décharge un octet (load/store bytes). Olivier Marchetti CM2 L architecture MIPS32 Année / 36

13 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : transferts de données exemples (3/4) Exemple 1 Soit tab[] un tableau d entiers 32 bits d adresse stockée dans le registre $v1. Soient deux variables x et y associées respectivement aux registres $v2 et $v3. Quel serait l équivalent MIPS de l instruction C : y = x + tab[5]; Exemple 2 Soit tab[] un tableau d entiers 16 bits d adresse stockée dans le registre $v1. Soit une variable x associée au registre $v2. Quel serait l équivalent MIPS de l instruction C : tab[1] = x + tab[10]; Olivier Marchetti CM2 L architecture MIPS32 Année / 36

14 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : transferts de données problème d alignement (4/4) Que se passe-t-il si le calcul d adresse est erroné? Soit tab[] un tableau contenant 0, 1, 2... Ces entiers sont encodés sur 32 bits (i.e. 4 octets). L adresse mémoire de ce tableau est dans $t. Le programmeur, étourdi, charge cependant les valeurs par : lh $s, C($t). avec la constante C prise dans 0, 2, 4... Mots chargés par le programmeur adr_tab[] = données mal lues tab[1] = 1 tab[0] = 0 Alignement mémoire Une donnée est alignée si son adresse mémoire est multiple de sa taille en octet. Exemple : les entiers sur 4 octets ont des adresses multiples de 4. La RAM étant entièrement adressée, il faut veiller à lire correctement les données. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

15 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Programmation C vs. Programmation MIPS Pour bien programmer, de quoi avons-nous besoin? 1 Réaliser des calculs (arithmétiques ou logiques). 2 Effectuer des transferts de données. 3 Manipuler des constantes. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

16 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : manipuler des constantes dans le code assembleur (1/3) Comment un programmeur peut-il utiliser des constantes dans son code MIPS? Un peu de bricolage Soit $AdrC stockant l adresse mémoire d un emplacement contenant la constante 10. lw $d, 0($AdrC) # $d 10 add $d, $d, $s # $d 10 + $s Problème d efficacité un chargement en mémoire est coûteux en temps. usage fréquent de petites constantes. = manipuler directement les constantes dans l assembleur MIPS Opérations arithmétiques à chargement immédiat (avec C sur 16 bits) : Addition immédiate addi addi $d, $s, C $d $s + C Soustraction immédiate subi subi $d, $s, C $d $s - C Opération logiques à chargement immédiat (avec C sur 16 bits) : AND immédiat (bit-à-bit) andi andi $d, $s, C $d $s & C OR immédiat (bit-à-bit) ori ori $d, $s, C $d $s C Test inférieur à immédiat slti (set on less than immediate) slti $d, $s, C $d ($s < C) Olivier Marchetti CM2 L architecture MIPS32 Année / 36

17 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : manipuler des constantes dans le code assembleur (2/3) Comment manipuler ( = 86400) 10 = ( ) 2? Un peu de bricolage La construire par étape en obervant que : ( ) 2 = ( ) ( ) 2 Avec cette décomposition et $d contenant 0, nous avons : addi $d, $d, 1 # $d sll $d, $d, 16 # $d $d 2 16 addi $d, $d, 0x5180 # $d $d + 0x5180 Un peu lourd... Décalage de bit sll, srl (shift left/right logical) sll/srl $d, $s, dec # dec < 2 5 Au niveau registre : sll $d, $s, dec $d $s 2 dec Au niveau registre (et si $d est un entier positif), srl $d, $s, dec $d $s 2 dec = MIPS permet de charger un petit entier sur les 16 bits du poids fort d un registre! Chargement poids fort immédiat lui (load upper immediate) Au niveau registre : lui $d, C lui $d, C $d 0 $d $d 2 16 valeur chargement Compléter par un addi ensuite... Olivier Marchetti CM2 L architecture MIPS32 Année / 36

18 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : manipuler des constantes dans le code assembleur (3/3) Comment faire une affectation en assembleur? = Variable = concept inexistant au niveau assembleur = Gestion des ressources matérielles (RAM, registres) La question serait davantage : Comment le programmeur charge-t-il ses registres? Depuis la RAM ou un registre lw $t, C($s) # $t RAM[$s + C] Avec un immédiat addi/ori $d, $s, 0 # $d $s add/or $d, $s, $zero # $d $s addi/ori $d, $zero, C # $d C Remarques Le registre $zero (ou $0) contient toujours registres, c est peu! = décharger certains registres avec sw. Les instructions or/ori sont un peu plus rapides que add/addi. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

19 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Programmation C vs. Programmation MIPS Pour bien programmer, de quoi avons-nous besoin? 1 Réaliser des calculs (arithmétiques ou logiques). 2 Effectuer des transferts de données. 3 Manipuler des constantes. 4 Pouvoir réaliser des branchements sur le code. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

20 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Assembleur MIPS : prendre des décisions Comment guider le flot d instructions en MIPS? Programme enregistré rappels Données et programmes sont stockés en mémoire. La mémoire est entièrement adressé. Une instruction est un mot mémoire. Un programme n est qu une suite de mots. = indiquer à l ordinateur l adresse de la prochaine instruction à exécuter. Instructions de branchement conditionnel MIPS : Branchement sur égalité beq (branch on equal) beq $s, $t, Ad Etq Au niveau registre : Si ($s == $t) alors PC PC Ad Etq Branchement non-égalité bne (branch on not equal) bne $s, $t, Ad Etq Au niveau registre : Si ($s!= $t) alors PC PC Ad Etq Olivier Marchetti CM2 L architecture MIPS32 Année / 36

21 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Arithmétiques Logiques Transfert Constantes Branchement Programmation C vs. Programmation MIPS Pour bien programmer, de quoi avons-nous besoin? 1 Réaliser des calculs (arithmétiques ou logiques). 2 Effectuer des transferts de données. 3 Manipuler des constantes. 4 Pouvoir réaliser des branchements sur le code. 5 Disposer de structures de contrôle classiques. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

22 Instructions MIPS Contrôle Données en MIPS E/S en MIPS IfThen IfThenElse While For Assembleur MIPS : if... then... Comment traduire un simple if d un code C? Soit le code C suivant : if (note archi < 0) note archi = 0; note archi += 1; Si $r est assigné à note archi : = la programmation assembleur, ce n est rien que des goto étiquette! Pseudo-instructions assembleur MIPS Les instructions MIPS sont : quasi-implémentées en matériel, X mais très peu nombreuses (57 au total). Pseudo-instructions MIPS : remplacent des petites portions de MIPS fréquentes (mais non implémentées dans le matériel), basées sur le instructions réelles du MIPS. utilisent un registre intermédiaire spécifique ($at). = pas très pratique pour coder... Exemple : avec : move $d, $r addi $d, $r, 0 bge $s, $t, Etq slt $at,$s,$t beq $at,$zero, Etq bge : branch if greater than or equal, le registre $at réservé à l assembleur. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

23 Instructions MIPS Contrôle Données en MIPS E/S en MIPS IfThen IfThenElse While For Assembleur MIPS : définir une condition Comment écrire en assembleur? Soit le code C suivant : if (note archi < 0) note archi = 0; note archi += 1; La séquence semble la même... La condition logique a été niée! Si $r est assigné à note archi : 1 bge $r, $0, SUITE 2 move $r, $0 3 SUITE : addi $r, $r, 1 Langage haut-niveau vs. assembleur MIPS : méthodologie En assembleur : une instruction par ligne. Nombre d opérandes par instruction déterminé par l ISA. Instructions et opérandes sont tous adressés. L ordinateur effectue en permanence le cycle chercher, décoder, exécuter. En d autres termes : lecture ligne après ligne, adresse après adresse, instruction après instruction. Ce fonctionnement glouton contraint le programmeur à adapter son écriture. = astuce : nier la condition logique pour préserver l ordre initial. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

24 Instructions MIPS Contrôle Données en MIPS E/S en MIPS IfThen IfThenElse While For Assembleur MIPS : if... then... [else] Comment traduire un simple if... then... [else] d un code C? Soit le code C suivant : if (note archi < 0) note archi = 0; else note archi += 1; Première tentative en MIPS : 1 bge $r, $0, SINON 2 move $r, $0 3 SINON : addi $r, $r, 1 Problème : à l exécution, on ajoute toujours 1 pt! l adresse d une instruction numéro ligne = effectuer des sauts d instructions grâce aux adresses! Instruction de branchement inconditionnel MIPS (saut) : Saut sur étiquette j Etq (jump) j Etq Au niveau registre : j Etq PC PC + 4[ ].4 Ad Etq avec concaténation des premiers bits $PC et ceux de l étiquette. if... then... [else] en MIPS Insérer un saut d instruction : 1 bge $r, $0, SINON 2 move $r, $0 3 j SUITE 4 SINON : addi $r, $r, 1 5 SUITE : Olivier Marchetti CM2 L architecture MIPS32 Année / 36

25 Instructions MIPS Contrôle Données en MIPS E/S en MIPS IfThen IfThenElse While For Assembleur MIPS : tant que... faire Boucle tant que... faire en C while (notes archi[i++] >= 0) nb notes archi += 1; Soient les assignations suivantes : l adresse du tableau note archi[] est stockée dans le registre $t0, le registre $ind contient la valeur de la variable i, le registre $n contient la valeur de la variable nb notes archi, les registres $t1, $t2, $t3 contiennent respectivement : la valeur 4, la valeur intermédiaire 4 i, la i e valeur du tableau note archi[]. Boucle tant que... faire en MIPS 1 TANTQUE : mul $t2, $t1, $ind # $t2 4 i 2 addi $t0, $t0, $t2 # archi[i] 3 lw $t3, 0($t0) # $t3 notes archi[i] 4 blt $t3, $zero, SUITE # test logique nié 5 addi $n, $n, 1 # incrémentation 6 addi $ind, $ind, 1 # incrémentation 7 j TANTQUE # saut vers TANTQUE 8 SUITE : Autres pseudo-instructions mul : retourne les 32 bits de poids faible du produit des opérandes. blt : branch on lower than. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

26 Instructions MIPS Contrôle Données en MIPS E/S en MIPS IfThen IfThenElse While For Assembleur MIPS : Pour... faire Boucle Pour (i allant de 0 à n - 1) faire en C for (i = 0; i < n; i++) { instructions for } En considérant que l assignation de registres suivante : $r contient la valeur de i, $t contient la valeur de n, $test stocke le résultat d un calcul intérmédiaire, une telle boucle se programme ainsi en MIPS : Boucle Pour (i allant de 0 à n - 1) faire en MIPS 1 add $r, $zero, $zero # $r POUR : slt $test, $r, $t # $test 0 si i >= n 3 beq $test, $zero, SUITE # saut vers la suite du code 4... # corps de la boucle 5 addi $r, $r, 1 # incrémentation compteur 6 j POUR # saut en début de boucle 7 SUITE : Olivier Marchetti CM2 L architecture MIPS32 Année / 36

27 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Déclarer/Definir des données Convention sur les registres Programmation C vs. Programmation MIPS Pour bien programmer, de quoi avons-nous besoin? 1 Réaliser des calculs (arithmétiques ou logiques). 2 Effectuer des transferts de données. 3 Manipuler des constantes. 4 Pouvoir réaliser des branchements sur le code. 5 Disposer de structures de contrôle classiques. 6 Disposer de variables déclarées et définies. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

28 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Déclarer/Definir des données Convention sur les registres Assembleur MIPS : déclarer et définir des variables (1/3) Langage haut-niveau vs. assembleur Haut-niveau : l abstraction variable dispense le programmeur de réfléchir à la localisation réelle des données. Assembleur : la localisation des données est inévitable. Segments mémoire MIPS et programme C : le segment texte.text contient les instructions du programme. = $pc : adresse de l instr. exécutée. le segment des données.data contient données statiques (variable globales ou statiques), = $gp : adresse du seg. des données. la mémoire dynamique gérée dans le tas (xxxalloc() en C). $gp $pc Mem. dispo. Tas données stat..data.text Programme Seg. données Seg. texte Mémoire du programme Les tailles (et donc les adresses) de ces segments sont calculées à la compilation. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

29 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Déclarer/Definir des données Convention sur les registres Assembleur MIPS : déclarer et définir des variables (2/3) Comment indiquer en MIPS où, comment, et quoi stoker? Indiquer le segment mémoire.text [adr] : la donnée sera dans le segment texte (i.e. avec les instructions du programme à l adresse adr si fournie)..data [adr] : la donnée sera stockée dans le segment des données (à l adresse adr si fournie)..stack : la donnée sera sur la pile (cf. CM3). k{text,data} : la donnée sera dans le segment {texte, données} du noyau du système d exploitation. Décrire la visibilité extern Etq taille : déclare la donnée enregistrée à l adresse Etq sur taille octets consécutifs comme étant globale au fichier. Place la donnée dans le segment des données. globl Etq : déclare l étiquette Etq est un symbole globale visible dans d autres fichiers assembleur. S apprend à l usage... Décrire et enregistrer les données Les enregistrements mémoire suivants sont réalisés à des adresses consécutives. align n : réalise l alignement mémoire de la donnée suivante sur une frontière de 2 n octects. space n : définit un espace de n octets consécutifs dans le segment des données. ascii ch : enregistre en mémoire la chaîne de caractère ch sans le caractère de fin de chaîne. asciiz ch : idem, mais avec le caractère de fin de chaîne. byte b 1,...,b n : enregistre n octets. double d 1,...,d n : enregistre n flottants double précision. float f 1,...,f n : enregistre n flottants simple précision. half h 1,...,h n : enregistre n quantités 16 bits (alignement demi-mot). word w 1,...,w n : enregistre n quantités 32 bits (alignement mot). Olivier Marchetti CM2 L architecture MIPS32 Année / 36

30 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Déclarer/Definir des données Convention sur les registres Assembleur MIPS : déclarer et définir des variables (3/3) Comment structurer un fichier assembleur MIPS? Fichier MIPS type Etiquettes Dir{Seg. mém, visib., données} Instr. Commentaires.data tab ent :.word 1,2,3, text.globl main # main devient global main : la $r, tab ent # charge tab entier dans $r Ecriture MIPS Une instruction par ligne. Etiquettes en début de ligne suivies de :. Idenfiticateur : idem au C. Pas de commentaires multilignes. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

31 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Déclarer/Definir des données Convention sur les registres Assembleur MIPS : convention d usage des registres Peut-on utiliser comme l on veut chacun des 32 registres? Pas vraiment : contraintes matérielles (fortes) et conventions logicielles. Noms et numéros de registres Nom Numéro Fonct. conv. $zero $0 constante 0 $at $1 Rés. assembleur $v0 $v1 $2 $3 Val. retour et Rés. fonction $a0 $a3 $4 $7 Arg. fonct. $t0 $t7 $8 $15 Temp. $s0 $s7 $16 $23 Temp. sauv. $t8 $t9 $24 $25 Temp. $k0 $k1 $26 $27 Rés. noyau SE $gp $28 Pointeur global $sp $29 Pointeur pile $fp $30 Pointeur bloc $ra $31 Adr. retour Nombre de conventions seront expliquées lors du CM3. Contraintes matérielles Le programme utilise d autres programmes. Le SE veille. Conventions logicielles X X X $zero contient toujours la valeur zéro. $ra utilisé pour le flot des instructions. ($HI, $LO) (ALU) utilisés pour (mult, div) = Ensemble de conventions déterminant le bon usage de l architecture (programme, compilation). = A respecter. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

32 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Programmation C vs. Programmation MIPS Pour bien programmer, de quoi avons-nous besoin? 1 Réaliser des calculs (arithmétiques ou logiques). 2 Effectuer des transferts de données. 3 Manipuler des constantes. 4 Pouvoir réaliser des branchements sur le code. 5 Disposer de structures de contrôle classiques. 6 Disposer de variables déclarées et définies. 7 Effectuer des entrées/sorties élémentaires. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

33 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Assembleur MIPS : effectuer des entrées/sorties élémentaires Comment réaliser une E/S élémentaire? Réaliser un appel système - méthodologie 1 Ecrire l instruction pour charger le service voulu dans le registre $v0. 2 [ Ecrire les instructions pour charger des arguments dans les registres $a0, $a1... (cf. documentation MIPS).] 3 Ecrire l instruction syscall. 4 [ Ecrire les instructions pour récupérer une valeur de retour de l appel syscall. ] Service Code Service Arguments Valeur de retour afficher entier 1 $a0 : stocke l entier voulu afficher ch. car. 4 $a0 : adresse de la chaîne lire entier 5 $v0 : entier lu lire ch. car. 8 $a0 : adresse du tampon exit 10 $a1 : nb. max. car. lus Olivier Marchetti CM2 L architecture MIPS32 Année / 36

34 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Assembleur MIPS : effectuer des entrées/sorties élémentaires exemple Ecrire en assembleur MIPS le programme qui affiche hello world. L instruction la (pour load address) permet de charger dans un registre une adresse. Olivier Marchetti CM2 L architecture MIPS32 Année / 36

35 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Assembleur vs. langage de haut-niveau : conclusion Pourquoi écrire en langage assembleur alors qu un langage de haut-niveau est finalement beaucoup plus intuitif? Langage Assembleur Langage haut-niveau Contrôle très fin du matériel (presque au niveau cycle). = très utile dans l embarqué Exploitation maximale des fonctionnalités offertes par le matériel. = très grande hétérogénéité du matériel et donc des ISA. Les archis passent... les langages haut-niveau restent! = le C a plus de 40 ans! Facilité d écriture. = accroît la productivité! Compilateurs de plus en plus performants. Peu intuitif. = entretien laborieux... Codes sources très longs. = productivité divisée! Certaines architectures ne sont exploitables qu en langage assembleur. Difficile d effectuer des choses très fines (e.g. temps réel). Olivier Marchetti CM2 L architecture MIPS32 Année / 36

36 Instructions MIPS Contrôle Données en MIPS E/S en MIPS Rendre à César ce qui est à César Références bibliographiques utilisées Organisation et conception des ordinateurs, J. Hennessy & D. Patterson, Dunod. en.wikipedia.org et diverses ressources... Images utilisées Image du transparent 18 : Sujet : Source : Licence : smileys. openclipart.org. domaine public. Image du transparent 31 : échangeur autoroutier Los Angeles-Pasadena-Santa- Monica (auteur : inconnu). Olivier Marchetti CM2 L architecture MIPS32 Année / 36

Rappels d architecture

Rappels d architecture 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

Plus en détail

Compilation (INF 564)

Compilation (INF 564) Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation

Plus en détail

Jeu d instructions NIOS II

Jeu d instructions NIOS II Jeu d instructions NIOS II 1 Formats d instructions Le processeur NIOS II a un jeu d instructions de type RISC. Il possède 32 registres de 32 bits, notés r0 à r31, avec r0 0. Les instructions sont de longueur

Plus en détail

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

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION 145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

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

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

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

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96 Assembleur i8086 Philippe Preux IUT Informatique du Littoral Année universitaire 95 96 1 Avertissement Ce document décrit le langage d assemblage étudié et utilisé dans le cadre des TP d architecture.

Plus en détail

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

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

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

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

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

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre Assembleur Faculté I&C, André Maurer, Claude Petitpierre INTRODUCTION Logiciel utilisé Faculté I&C, André Maurer, Claude Petitpierre MEMOIRE Mémoire Faculté I&C, André Maurer, Claude Petitpierre Mémoire

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

Conception de circuits numériques et architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique

Plus en détail

ASR1 TD7 : Un microprocesseur RISC 16 bits

ASR1 TD7 : Un microprocesseur RISC 16 bits {Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit

Plus en détail

Exécution des instructions machine

Exécution des instructions machine Exécution des instructions machine Eduardo Sanchez EPFL Exemple: le processeur MIPS add a, b, c a = b + c type d'opération (mnémonique) destination du résultat lw a, addr opérandes sources a = mem[addr]

Plus en détail

Programmation assembleur : aperçu

Programmation assembleur : aperçu Assembleur : Younès EL AMRANI. 1 Programmation assembleur : aperçu Programmation en assembleur : NASM Module M14 Semestre 4 Printemps 2010 Equipe pédagogique : Younès El Amrani, Abdelhakim El Imrani, Faissal

Plus en détail

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

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants : GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

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

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

Organigramme / Algorigramme Dossier élève 1 SI

Organigramme / Algorigramme Dossier élève 1 SI Organigramme / Algorigramme Dossier élève 1 SI CI 10, I11 ; CI 11, I10 C24 Algorithmique 8 février 2009 (13:47) 1. Introduction Un organigramme (ou algorigramme, lorsqu il est plus particulièrement appliqué

Plus en détail

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

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

GPA770 Microélectronique appliquée Exercices série A GPA770 Microélectronique appliquée Exercices série A 1. Effectuez les calculs suivants sur des nombres binaires en complément à avec une représentation de 8 bits. Est-ce qu il y a débordement en complément

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Structure d un programme

Structure d un programme Architecture des ordinateurs Cours 6 Structure d un programme 3 décembre 2012 Archi 1/30 Programme en Assembleur Archi 2/30 Sections de données programme en assembleur = fichier texte (extension.asm) organisé

Plus en détail

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

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

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

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques CTIA04 Page 1 1. Les types de données sous S7 300 Il existe plusieurs types de données utilisées pour la programmation

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 7 17 décembre 2012 Archi 1/1 Fonctions, suite et fin Archi 2/1 Rappel Forme générale d un sous-programme (fonction) : etiquette sousprogramme: push ebp ; empile la valeur

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

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

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours Informatique 1. Monsieur SADOUNI Salheddine Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale

Plus en détail

Architecture matérielle des systèmes informatiques

Architecture matérielle des systèmes informatiques Architecture matérielle des systèmes informatiques IDEC, Renens. Version novembre 2003. Avertissement : ce support de cours n est pas destiné à l autoformation et doit impérativement être complété par

Plus en détail

Gestion mémoire et Représentation intermédiaire

Gestion mémoire et Représentation intermédiaire Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,

Plus en détail

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

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

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Informatique Générale

Informatique Générale Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html

Plus en détail

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Microprocesseur + Logiciel

Microprocesseur + Logiciel Microprocesseur + Logiciel Robot EVALBOT MOHAMED AKIL BUREAU 5253 UNITE IGI 1001 PROGRAMMATION DES MICROPROCESSEURS Présentation [IGI1001] CONTEXTE SCIENTIFIQUE... 4 1. OBJECTIFS DE L UNITE... 6 2. OBJECTIFS

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation. Université du Québec à Chicoutimi Département d informatique et de mathématique Plan de cours Titre : Élément de programmation Sigle : 8inf 119 Session : Automne 2001 Professeur : Patrice Guérin Local

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Une version javascript sera disponible directement dans le cours prochainement.

Une version javascript sera disponible directement dans le cours prochainement. Author : Cédric Vanconingsloo Ce cours est principalement axé sur la compréhension du fonctionnement d'un ordinateur et l'étude du seul langage qu'il connaisse, le binaire. De ce fait, le cours est relativement

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

Plus en détail

Programmation en langage C

Programmation en langage C Programmation en langage C Anne CANTEAUT INRIA - projet CODES B.P. 105 78153 Le Chesnay Cedex Anne.Canteaut@inria.fr http://www-rocq.inria.fr/codes/anne.canteaut/cours C 2 Table des matières 3 Table des

Plus en détail

Partie 7 : Gestion de la mémoire

Partie 7 : Gestion de la mémoire INF3600+INF2610 Automne 2006 Partie 7 : Gestion de la mémoire Exercice 1 : Considérez un système disposant de 16 MO de mémoire physique réservée aux processus utilisateur. La mémoire est composée de cases

Plus en détail

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Le langage C. Introduction, guide de reference

Le langage C. Introduction, guide de reference Le langage C Introduction, guide de reference Ce document est une présentation du langage de programmation C, de sa syntaxe et de ses spécificités. Il est destiné essentiellement à servir de mémo-guide

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques... Désobfuscation automatique de binaires Et autres idyles bucoliques... Alexandre Gazet Sogeti / ESEC R&D alexandre.gazet(at)sogeti.com Yoann Guillot Sogeti / ESEC R&D yoann.guillot(at)sogeti.com SSTIC 2009

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

Plus en détail

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE ARDUINO DOSSIER RESSOURCE POUR LA CLASSE Sommaire 1. Présentation 2. Exemple d apprentissage 3. Lexique de termes anglais 4. Reconnaître les composants 5. Rendre Arduino autonome 6. Les signaux d entrée

Plus en détail

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 1 : La gestion dynamique de la mémoire Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement

Plus en détail

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers. I Présentation : Dans le chapitre 1, nous avons vu comment utiliser les appels-systèmes de bas niveau pour créer et accéder à des fichiers sur le disque. Nous avons notamment mis en évidence leur dépouillement

Plus en détail

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 pierre.letouzey@inria.fr PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS CCS Sommaire Généralités sur le langage. 2 Structure d un programme en C.. 3 Les constantes et équivalences.. 4 Les variables...

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE AMICUS 18 (2ème partie) Dans la première partie, nous avions présenté la platine Amicus 18 et nous avions réalisé quelques montages simples. Nous allons découvrir un peu mieux la programmation. Dans la

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

PIC : COURS ASSEMBLEUR

PIC : COURS ASSEMBLEUR PIC : COURS ASSEMBLEUR I) Fonctions de base d une machine informatique Contenir de façon permanente les tâches à exécuter (mémoire programme) en ROM ou sur support magnétique. Contenir de façon temporaire

Plus en détail

Introduction à l algorithmique et à la programmation M1102 CM n 3

Introduction à l algorithmique et à la programmation M1102 CM n 3 Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY eric.remy@univ-amu.fr IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d

Plus en détail

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

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996] Mesure de performances [Architecture des ordinateurs, Hennessy & Patterson, 1996] Croissance des performances des microprocesseurs Avant le milieu des années 80, le gain dépendait de la technologie. Après,

Plus en détail

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

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007 Introduction à l architecture des ordinateurs Adrien Lebre Décembre 2007 Plan - partie 1 Vue d ensemble La carte mère Le processeur La mémoire principal Notion de bus Introduction à l architecture des

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

SYSTÈME DE GESTION DE FICHIERS

SYSTÈME DE GESTION DE FICHIERS SYSTÈME DE GESTION DE FICHIERS - DISQUE 1 Les couches logiciels réponse requête Requêtes E/S Système E/S Pilote E/S Interruptions utilisateur traitement S.E. commandes S.E. S.E. matériel Contrôleur E/S

Plus en détail

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon 13 janvier 2015 2 Table des matières Organisation générale du cours 7 1 Notions générales d algorithmique et de programmation

Plus en détail

Langage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289

Langage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Langage C Patrick Corde Patrick.Corde@idris.fr 22 juin 2015 Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail