Examen UE INF241 : Introduction aux Architectures Logicielles et Matérielles



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

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

Structure d un programme

Programmation assembleur : aperçu

Licence Sciences et Technologies Examen janvier 2010

Microprocesseur + Logiciel

Conception de circuits numériques et architecture des ordinateurs

Architecture des ordinateurs

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

Rappels d architecture

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

Architecture des ordinateurs

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

ASR1 TD7 : Un microprocesseur RISC 16 bits

Compilation (INF 564)

Jeu d instructions NIOS II

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Cours Informatique 1. Monsieur SADOUNI Salheddine

CM2 L architecture MIPS32

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

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

Architecture des ordinateurs Introduction à l informatique

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

Algorithme. Table des matières

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

Logiciel de base. Première année ENSIMAG

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

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

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Rappels Entrées -Sorties

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

IV- Comment fonctionne un ordinateur?

Architecture Matérielle et Logicielle (LIF6) Cahier d'exercices, automne 2014

Algorithmique et Programmation, IMA

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

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

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

I. Introduction aux fonctions : les fonctions standards

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

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

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

Introduction à l informatique en BCPST

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

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

Le langage C. Séance n 4

Introduction à MATLAB R


Solution du challenge SSTIC Emilien Girault ANSSI/COSSI/DTO/BAI 06/06/13

Cours d Algorithmique et de Langage C v 3.0

Logiciel de Base. I. Représentation des nombres

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

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

Algorithmique et structures de données I

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

Représentation des Nombres

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

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

PIC : COURS ASSEMBLEUR

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

Les opérations binaires

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

Limitations of the Playstation 3 for High Performance Cluster Computing

Gestion mémoire et Représentation intermédiaire

Cours A7 : Temps Réel

Windows XP niveau 2. D. Hourquin, Médiapôle St Ouen l'aumône

Présentation du cours

Agrégation de liens xdsl sur un réseau radio

Programmation système I Les entrées/sorties

Programmation Bas Niveau

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

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Représentation d un entier en base b

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

Architecture de l ordinateur

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

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Architecture matérielle des systèmes informatiques

EX-word TextLoader Fonction Bibliothèque

Plan du cours Cours théoriques. 29 septembre 2014

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

Ordinateurs, Structure et Applications

REALISATION d'un. ORDONNANCEUR à ECHEANCES

MANUEL D UTILISATION PRO-FACE

Conservez la documentation à portée de main pour toute référence future. Le terme «pointeur» dans ce manuel désigne le pointeur interactif YA-P10.

Symantec Backup Exec.cloud

Conventions d écriture et outils de mise au point

Enregistrer votre dispositif

Annexe : La Programmation Informatique

Fonctionnement et performance des processeurs

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

V- Manipulations de nombres en binaire

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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

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

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Transcription:

UNIVERSITE Joseph FOURIER, Grenoble Licence de Sciences et technologie - Parcours MIN, INF, BIN et MIN international Examen UE INF241 : Introduction aux Architectures Logicielles et Matérielles Première session 2014-2015, 20 mai 2015, durée 2 h. Documents, calculettes, téléphones portables non autorisés. Le barême est donné à titre indicatif. En annexe, un résumé des instructions du processeur ARM et des procédures de la bibliotheque es.s. 1 Fonctions en ARM (11 points) On considère la zone mémoire suivante :.data aff:.asciz "resultat :" (a) Ajoutez, après la chaîne de caractères aff, la déclaration d un tableau tab contenant 6 mots. Ce tableau sera initialisé avec les valeurs 40, 30, 10, 20, 12 et 32. N oubliez pas de régler le problème d alignement! (1 point) Dans un premier temps, nous supposons l existence des deux fonctions dont les prototypes sont donnés cidessous : fonction division(a : entier naturel, B : entier naturel) avec résultat entier naturel // division retourne le résultat de la division entière de A par B fonction somme(t : adresse d un tableau, n : entier naturel) avec résultat entier naturel // somme retourne la somme des n éléments du tableau T À l aide de ces deux fonctions, on souhaite écrire le programme principal suivant : 1: Procédure principale() 2: s := somme(tab,6) 3: r := division(s,6) 4: afficher "resultat : " 5: afficher r ATTENTION : Les paramètres et le résultat des fonctions somme et division sont placés dans la pile, suivant les conventions adoptées en cours. (b) Ecrivez le code ARM du programme principal. Les variables s et r seront réalisées avec les registres r0 et r2, respectivement. Pour les affichages, vous utiliserez les fonctions fournies dans es.s (2,5 points) (c) Dessinez l état de la pile juste avant l appel effectif (bl) de la fonction somme à la ligne 2. (1 point) Voici le code ARM de la fonction division : 6: sub sp,sp,#4 7: str fp,[sp] 8: mov fp,sp 9: sub sp,sp,#4 10: str r0,[sp] 11: sub sp,sp,#4 12: str r1,[sp] 13: sub sp,sp,#4 14: str r2,[sp] 1

15: ldr r0, [fp,#12] 16: ldr r1, [fp,#8] 17: mov r2,#0 18: deb: cmp r0,r1 19: blo fin 20: add r2,r2,#1 21: sub r0,r0,r1 22: bal deb 23: fin: str r2,[fp,#4] 24: ldr r2,[sp] 25: add sp,sp,#4 26: ldr r1,[sp] 27: add sp,sp,#4 28: ldr r0,[sp] 29: add sp,sp,#4 30: ldr fp,[sp] 31: add sp,sp,#4 32: mov pc,lr (d) Résumez en quelques mots à quelles étapes principales de la programmation d une fonction correspondent les lignes suivantes : (2 points) Lignes 6 à 8. Ligne 9 à 14. Lignes 15 et 16. Lignes 17 à 22. Lignes 23. Lignes 24 à 29. Lignes 30 et 31. Lignes 32. Nous donnons maintenant l algorithme de la fonction somme : 33: fonction somme(t : adresse d un tableau, n : entier naturel) avec résultat entier naturel 34: si n = 1 alors 35: retourner T[0] 36: sinon 37: retourner T[n-1]+somme(T,n-1) 38: fin si ATTENTION : Les paramètres et le résultat de la fonction somme sont placés dans la pile, suivant les conventions adoptées en cours. (e) Donnez le code ARM de somme. Vous justifierez les étapes principales avec des commentaires dans le code. (4,5 points) 2 Processeur à accumulateur (9 points) Dans cette partie, nous considérons un processeur à accumulateur fictif proche de celui vu lors du cours 9. La partie opérative de ce processeur à accumulateur est donnée dans la figure 1. Adresses et données. La principale différence avec le processeur vu lors du cours est qu ici les tailles du codage d une adresse et d une donnée sont différentes : 16 bits (un demi-mot) pour une adresse et 8 bits (un octet) pour une donnée. 2

adresse ma op1 0xFFFF 0 1 8 acc pc sp sauv res op2 rcmp md donnée Figure 1 Processeur à accumulateur Registres. Le processeur contient les 7 registres suivants : Nom Taille Visible par l utilisateur? Remarque acc 8 oui md 8 non rcmp 8 non sauv 8 non pc 16 non compteur de programme sp 16 non pointeur de pile ma 16 non ATTENTION : acc (pour accumulateur) est le seul registre de données directement visible par le programmeur. Deux tailles de registres sont possibles 8 et 16 bits. Les registres de données sont sur 8 bits et les registres d adresses sont sur 16 bits. L Unité Arithmétique et Logique (UAL). L UAL comporte deux entrées de 16 bits op1 et op2 ainsi qu une sortie res de 16 bits. Les opérations possibles sur cette UAL sont les suivantes : Opération res op1 res op1 + op2 res op1 op2 res op1 << op2 Remarque Décale op1 de op2 bits sur la gauche Remarques : Les accès possibles à op1, op2 et res sont donnés par les flèches dans la figure 1. Lorsque la valeur de res (16 bits) est envoyée vers un registre rg de 8 bits, ses 8 bits de poids faible sont affectés à rg (les 8 bits de poids fort sont perdus!). Lorsque la valeur vi d un registre 8 bits est envoyée à op1 ou op2, vi est affectée aux 8 bits de poids faibles, les bits de poids forts restants sont complétés avec la valeur du 8ème bit de vi (son bit de poids fort). Ainsi, l UAL ne fait que des calculs signés. Micro-actions et micro-conditions. Les transferts possibles sont les suivants : 3

md mem[ma] lecture d un mot mémoire. C est la seule possibilité en lecture! mem[ma] md écriture d un mot mémoire C est la seule possibilité en écriture! rcmp reg 0 affectation reg 0 peut uniquement être acc ou md! reg 0 i affectation i peut être 0xFFFF ou 0 reg 0 est pc ou sp reg 0 reg 1 affectation reg 0 est pc, acc, sauv, ma ou md reg 1 est pc, acc, sauv, ma, md ou sp reg 0 reg 1 + 1 incrémentation reg 0 est pc ou sp reg 1 est pc ou sp sp sp 1 décrémentation reg 0 reg 1 op reg 2 opération reg 0 est pc, acc, md, ma ou sauv reg 1 est pc, acc, md, ma ou sauv reg 2 est pc, acc, md ou sauv op : +, ma reg 0 << i décalage de i bits sur la gauche reg 0 est md ou sauv 1 i 8 Seul le registre rcmp permet de faire des tests : rcmp = entier (c est donc la seule micro-condition). Le langage. Les instructions sont décrites ci-dessous. Code Instruction Signification taille (octets) 0 ld vi affecte acc à la valeur immédiate vi 2 1 ld ad chargement de l octet en mémoire à l adresse ad dans acc 3 2 add ad mise à jour de acc avec 3 la somme du contenu de acc et du mot mémoire d adresse ad 3 sub ad mise à jour de acc avec 3 la soustraction du contenu de acc et du mot mémoire d adresse ad 4 st ad rangement en mémoire à l adresse ad du contenu de acc 3 5 jmp ad saut à l adresse ad 3 6 jeq ad si acc = 0, alors saut à l adresse ad 3 7 push empile la valeur contenue dans acc 1 8 pop dépile le sommet de pile dans acc 1 Les instructions sont codées sur 1, 2 ou 3 octets chacunes : le premier octet représente le code de l opération ; le deuxième octet, s il existe, contient l octet de poids fort d une adresse ou bien une constante. le troisième octet, s il existe, contient l octet de poids faible d une adresse. Automate d interprétation. Un automate d interprétation incomplet vous est donné dans la figure 2. (f) Expliquez l interprétation d une instruction ld (vous pouvez utiliser un exemple). (2 points) (g) Ajoutez l interprétation de l instruction st à l automate. (1 point) (h) Ajoutez l interprétation de l instruction jeq à l automate. (2 points) Pour interpréter les instructions push et pop vous utiliserez le registre sp que vous initialiserez à l adresse 0xFFFF. De plus, vous adopterez les conventions suivantes : la pile évolue en direction des adresses décroissantes, et Le pointeur de pile (sp) pointe vers le sommet de pile (case pleine). (i) Ajoutez l interprétation de l instruction push à l automate. (2 points) (j) Ajoutez l interprétation de l instruction pop à l automate. (2 points) 4

pc 0 sp 0xFFFF ma pc rcmp<5 rcmp md pc pc+1 ma pc pc pc+1 0<rcmp<7 sauv md ma pc rcmp=0 ma sauv<<8 acc md ma ma+md rcmp<4 rcmp=5 pc ma rcmp=1 acc md rcmp=2 acc acc+md rcmp=3 acc acc-md pc pc+1 Figure 2 Automate d interprétation incomplet 5

3 ANNEXE I : instructions du processeur ARM Nom Explication du nom Opération Remarque AND AND et bit à bit EOR Exclusive OR ou exclusif bit à bit SUB SUBstract soustraction RSB Reverse SuBstract soustraction inversée ADD ADDition addition ADC ADdition with Carry addition avec retenue SBC SuBstract with Carry soustraction avec emprunt RSC Reverse Substract with Carry soustraction inversée avec emprunt TST TeST et bit à bit pas rd TEQ Test EQuivalence ou exclusif bit à bit pas rd CMP CoMPare soustraction pas rd CMN CoMpare Not addition pas rd ORR OR ou bit à bit MOV MOVe copie pas rn BIC BIt Clear et not bit à bit MVN MoVe Not not (complément à 1) pas rn Bxx Branchement xx = condition Cf. table ci-dessous BL Branchement à un adresse de retour sous-programme dans r14=lr LDR load STR store L opérande source d une instruction MOV peut être une valeur immédiate notée #5 ou un registre noté Ri, i désignant le numéro du registre. Il peut aussi être le contenu d un registre sur lequel on applique un décalage de k bits ; on note Ri, DEC #k, avec DEC {LSL, LSR, ASR, ROR}. 4 ANNEXE II : codes conditions du processeur ARM La table suivante donne les codes de conditions arithmétiques xx pour l instruction de branchement Bxx. mnémonique signification condition testée EQ égal Z NE non égal Z CS/HS dans N C CC/LO < dans N C MI moins N PL plus N VS débordement V VC pas de débordement V HI > dans N C Z LS dans N C Z GE dans Z (N V ) (N V ) LT < dans Z (N V ) (N V ) GT > dans Z Z ((N V ) (N V )) LE dans Z Z (N V ) (N V ) AL toujours 6

5 ANNEXE III : fonctions d entrée/sortie Nous rappelons les principales fonctions d entrée/sortie du fichier es.s. Les fonctions d affichages : bl EcrHexa32 affiche le contenu de r1 en hexadécimal. bl EcrZdecimal32 affiche le contenu de r1 en décimal sous la forme d un entier relatif de 32 bits. bl EcrZdecimal16 affiche le contenu de r1 en décimal sous la forme d un entier relatif de 16 bits. bl EcrZdecimal8 affiche le contenu de r1 en décimal sous la forme d un entier relatif de 8 bits. bl EcrNdecimal32 affiche le contenu de r1 en décimal sous la forme d un entier naturel de 32 bits. bl EcrNdecimal16 affiche le contenu de r1 en décimal sous la forme d un entier naturel de 16 bits. bl EcrNdecimal8 affiche le contenu de r1 en décimal sous la forme d un entier naturel de 8 bits. bl EcrChaine affiche la chaîne de caractères dont l adresse est dans r1. Les fonctions de saisie clavier : bl Lire32 récupère au clavier un entier 32 bits et le stocke à l adresse contenue dans r1. bl Lire16 récupère au clavier un entier 16 bits et le stocke à l adresse contenue dans r1. bl Lire8 récupère au clavier un entier 8 bits et le stocke à l adresse contenue dans r1. bl LireCar récupère au clavier un caractère et stocke son code ASCII à l adresse contenue dans r1. 7