Microprocesseur + Logiciel



Documents pareils
Informatique Générale

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

Logiciel de Base. I. Représentation des nombres

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

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

ASR1 TD7 : Un microprocesseur RISC 16 bits

Les opérations binaires

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Rappels d architecture

Architecture de l ordinateur

Conversion d un entier. Méthode par soustraction

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

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

Représentation d un entier en base b

Représentation des Nombres

IV- Comment fonctionne un ordinateur?

V- Manipulations de nombres en binaire

Algorithme. Table des matières

Conception de circuits numériques et architecture des ordinateurs

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

Licence Sciences et Technologies Examen janvier 2010

Architecture des ordinateurs

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

Jeu d instructions NIOS II

Initiation à la programmation en Python

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

IFT1215 Introduction aux systèmes informatiques


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

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

Cours 1 : Qu est-ce que la programmation?

Rappels sur les suites - Algorithme

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

Architecture matérielle des systèmes informatiques

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

1 Introduction au codage

STAGE IREM 0- Premiers pas en Python

Une version javascript sera disponible directement dans le cours prochainement.

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

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

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

Structure de base d un ordinateur

Organisation des Ordinateurs

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Architecture des ordinateurs Introduction à l informatique

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

TD : Codage des images

Introduction à MATLAB R

TP : Gestion d une image au format PGM

Exécution des instructions machine

Programmation assembleur : aperçu

PIC : COURS ASSEMBLEUR

Leçon 1 : Les principaux composants d un ordinateur

Concevoir son microprocesseur

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/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)

EXCEL TUTORIEL 2012/2013

Rappels Entrées -Sorties

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

Architecture des Ordinateurs. Partie II:

Système binaire. Algèbre booléenne

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

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

Compilation (INF 564)

Algorithmique et Programmation, IMA

Structure d un programme

Chapitre 10 Arithmétique réelle

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

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

I00 Éléments d architecture

CONFIGURATION DE L AUTOMATE SIEMENS

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

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

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Créer le schéma relationnel d une base de données ACCESS

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Cours 1 : La compilation

LOGICIEL DC4D MONITOR

Langages et Concepts de Programmation Introduction à la programmation en langage C

IFT2880 Organisation des ordinateurs et systèmes

TP 1. Prise en main du langage Python

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Machines virtuelles Cours 1 : Introduction

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

ELP 304 : Électronique Numérique. Cours 1 Introduction


Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Partie 7 : Gestion de la mémoire

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Transcription:

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 PEDAGOGIQUES... 7 3. ORGANISATION DE L UNITE... 8 C/TD-1 : OPERATIONS ARITHMETIQUES BINAIRES... 10 1. INTRODUCTION... 10 2. ADDITION BINAIRE... 12 3. OPERATIONS DE BASE SUR ENTIERS NATURELS... 12 3.1. Addition de deux entiers naturels... 12 4. OPERATIONS SUR LES ENTIERS... 15 4.1. Addition en code complément à 2 (CC2)... 15 4.2. Soustraction par addition en CC2... 16 5. MULTIPLICATION OU DIVISION PAR UNE PUISSANCE DE 2... 16 5.1. Multiplication par... 16 5.2. Division par... 17 COMPLEMENTS... 18 1. OPERATIONS LOGIQUES... 18 1.1. Tables de vérité... 18 2. SOUSTRACTION BINAIRE... 18 3. OPERATION DE DECALAGE... 19 4. MULTIPLICATION BINAIRE... 19 EXERCICES SEANCE C/TD1 : OPERATIONS ARITHMETIQUES BINAIRES... 20 1. OPERATIONS SUR LES ENTIERS NATURELS... 20 2. OPERATIONS SUR LES ENTIERS... 20 RAPPELS : SYSTEME DE NUMERATION - CONVERSION... 21 1. SYSTEME DE NUMERATION DE BASE... 21 2. PRINCIPE DE CODAGE EN BASE... 22 3. PRINCIPE DE L ALGORITHME DE CODAGE D UN ENTIER POSITIF EN BASE... 23 4. CONVERSION... 23 4.1. Conversion de la base en décimal :... 23 4.2. Conversion Hexadécimal décimal et décimal Hexadécimal :... 24 4.3. Conversion Hexadécimal binaire et binaire Hexadécimal :... 24 5. LE CODE DCB (DECIMAL CODE BINAIRE OU 8421 OU BCD) :... 24 6. TABLEAU RECAPITULATIF DES DIFFERENTS CODES BINAIRES... 25 7. CODE ASCII (AMERICAN STANDARD CODE FOR INTERCHANGE OF INFORMATION) EN HEXADECIMAL... 25 COMPLEMENTS... 26 C/TD-2 : ORDINATEUR : MEMOIRE PRINCIPALE ORGANISATION ET ACCES AUX DONNEES... 28 1. ARCHITECTURE D UN ORDINATEUR... 28 1.1. Architecture interne simplifiée d un microprocesseur... 31 2. STRUCTURES DE DONNEES DE TYPE TABLEAU ET IMPLANTATION EN MEMOIRE... 32 2.1. Tableau à une dimension (1D)... 32 2.2 Tableau à deux dimensions (2D)... 33 3. MICROPROCESSEUR ARM CORTEX M3 : REGISTRES INTERNES ET ORGANISATION DE LA MEMOIRE... 35 3.1. Les registres internes... 35 3.2. Organisation mémoire Arm Cortex-M3... 37 2

Présentation [IGI1001] 3.3. ARM Cortex M3 : exemples de quelques instructions arithmétiques et logiques... 39 3.4. Exemples d instructions d accès à la mémoire : instruction load et instruction store... 43 EXERCICES SEANCE C/TD2 : ORDINATEUR : MEMOIRE PRINCIPAL ORGANISATION ET ACCES AUX DONNEES... 45 C/TD -3 : BOUCLES : ALGORITHMES ET ORGANIGRAMMES... 47 1. LES STRUCTURES ALGORITHMIQUES FONDAMENTALES... 48 1.1. Structure linéaire... 48 1.2. Structure alternative ou conditionnelle :... 49 1.3. Structure répétitive, structure itérative ou boucle... 51 2. REPRESENTATION SOUS FORMES D ORGANIGRAMMES DES STRUCTURES ALGORITHMIQUES FONDAMENTALES... 53 EXERCICES SEANCE C/TD3 : STRUCTURES DE CONTROLE BOUCLES : ALGORITHMES ET ORGANIGRAMMES... 55 C/TD -4 : STRUCTURES DE CONTROLE BOUCLES ET PROGRAMMATION... 57 EXERCICES SEANCE C/TD4 : STRUCTURES DE CONTROLE BOUCLES ET PROGRAMMATION... 60 TD 1 : MICROPROCESSEUR : REGISTRES INTERNES TRANSFERTS DE DONNEES OPERATIONS ARITHMETIQUES ET INDICATEURS... 62 PARTIE I : PRISE EN MAIN DU SIMULATEUR VISION 4... 62 PARTIE II : EXERCICES A FAIRE A L AIDE DU SIMULATEUR VISION 4... 63 TD 2 : MICROPROCESSEUR : MODES D ADRESSAGE DE LA MEMOIRE PRINCIPALE ET ACCES AUX DONNEES.. 66 TD 3 : STRUCTURES DE CONTROLES BOUCLES ET PROGRAMMATION ARM CORTEX M3... 68 SOUS ENSEMBLE DU JEU D INSTRUCTION ARM CORTEX M3... 70 1. OPERATIONS ARITHMETIQUES... 70 2. INSTRUCTIONS ARITHMÉTIQUES... 71 3. OPERATIONS LOGIQUES : ET, OU, OU EXCLUSIF, OPERATIONS DE DECALAGE... 72 4. INSTRUCTION DE COMPARAISON INSTRUCTION DE BRANCHEMENT CONDITIONNELLE... 74 5. INSTRUCTIONS LECTURE (LOAD)/ECRITURE (STORE) - MEMOIRE... 75 3

Présentation [IGI1001] Unité IGI 1001 2013/2014 : Programmation des microprocesseurs Mohamed AKIL Bureau 5253, mail : mohamed.akil@esiee.fr Département Informatique et Télécommunications Contexte scientifique L unité IGI 1001 est votre première unité d Informatique. L informatique est la science du traitement automatique de l information. L informatique traite de deux aspects complémentaires : le logiciel, qui décrit le traitement à réaliser le matériel (machine informatique), qui réalise ce traitement Cette unité porte sur la programmation des microprocesseurs, composants utilisés pour traiter les données selon une séquence d instructions appelée programme (logiciel). Nous couvrirons dans cette unité aussi bien l aspect logiciel de base que l aspect matériel de l informatique, c'est-à-dire l architecture de base d un ordinateur (ou d un système à base de microprocesseurs). Cette architecture de base comprend : le microprocesseur, la mémoire principale, et les Entrées/Sorties. Les données à traiter et le programme sont contenus dans la mémoire principale. Les Entrées/Sorties sont des dispositifs permettant de communiquer avec le monde extérieur (écran, clavier, etc.) 4

Présentation [IGI1001] Un programme, dans le cadre de cette unité, est une suite d instructions écrite à l aide d un langage de programmation (langage informatique). Le langage utilisé dans cette unité est le langage assembleur, il permet d atteindre cet objectif qu est de couvrir l aspect logiciel de base, l aspect matériel, et d expliquer/décrire le fonctionnement des éléments physiques importants d un ordinateur : le microprocesseur, la mémoire principale et les entrées/sorties. Le langage assembleur s écrit différemment selon le microprocesseur utilisé. Le microprocesseur utilisé dans cette unité est le microprocesseur ARM (Advanced RISC Machines) Cortex M3. Dans l unité IGI 1001, le programme source (qui n est rien de plus que du texte) est écrit en langage assembleur à partir du jeu d instructions du microprocesseur utilisé, ce programme doit être traduit par un logiciel appelé assembleur pour obtenir le code en langage machine (codé en binaire) de ce programme. C est ce code en langage machine qu exécute le microprocesseur. Algorithme : un algorithme est une suite ordonnée d instructions qui indique la démarche à suivre pour résoudre un problème. La programmation a pour rôle de traduire l algorithme dans un langage informatique afin que l ordinateur puisse exécuter automatiquement la séquence d instruction. Important : le point de départ en programmation est l algorithmique. C est ainsi, que dans cette unité, les solutions des problèmes à résoudre (exercices des séances C/TD, TD et TP) seront d abord décrites sous la forme d algorithmes et d organigrammes (un organigramme est une représentation graphique d un algorithme). L algorithme est par la suite écrit à l aide du langage assembleur pour obtenir le programme source, dit «code source». Ce code source est traduit en code machine à exécuter par le microprocesseur. 5

Présentation [IGI1001] 1. Objectifs de l unité L objectif principal de cette unité est d assimiler et utiliser les notions fondamentales nécessaires à la programmation des microprocesseurs. Ces notions portent successivement sur : Comment un microprocesseur effectue les opérations arithmétiques dans les ensembles (entiers naturels) et (entiers). Comment interprète-t-on les résultats obtenus en fonction des indicateurs positionnés par le microprocesseur : Z (éro), C (arry = Retenue), N (égatif = nombres avec un signe), V (overflow). Comment est organisée la mémoire principale, c'est-à-dire comment les données sont rangées dans la mémoire principale (RAM : Random Access Memory) et comment le microprocesseur y accède (pour lire et/ou modifier ces données). Différents modes d adressage sont utilisés par le microprocesseur pour accéder aux données en mémoire principale. Les structures algorithmiques fondamentales : structure linéaire, structure de contrôle et boucles, ainsi que les instructions pour les écrire sous la forme d algorithmes et sous la forme de programmes. La programmation des échanges de données entre le microprocesseur et les dispositifs d entrée/sortie. Comme dispositifs d E/S disponibles sur le kit EVALBOT, on peut citer : Bouton Poussoir, LED (diode électroluminescente : DEL, Light-Emitting Diode : LED), des moteurs. 6

Présentation [IGI1001] 2. Objectifs pédagogiques Les séances Apprentissage Par Exercices APE (notés C/TD), ces séances remplacent les cours en amphithéâtre, elles sont axées sur un apprentissage par exercices. Ces séances se font en petit groupe (environ 24 élèves par classe). Les objectifs pédagogiques de cette nouvelle organisation visent : à vous rendre actif et à favoriser les interactions o avec l enseignant o entre les étudiants à favoriser : o votre travail personnel et notamment en préparant la séance en se basant entre sur les supports distribués o et votre participation à l aide des exercices à faire par groupe lors de la séance à vous aider à développer des méthodes de travail «efficaces» : autonomie, apprendre à apprendre, travail collaboratif, Les supports (polycopiés) distribués, les sujets abordés, la planification et l organisation de l unité contribueront à atteindre ces objectifs. Ainsi, les supports traitant des sujets abordés seront distribués avant les séances concernées afin de vous permettre de préparer la séance. Un travail personnel et/ou par groupe, vous est demandé, il vous permettra de décrire les notions traitées dans les supports, de les expliquer et les utiliser. Cette préparation sert aussi à identifier les questions à poser en séance, pour que les réponses y soient apportées. En se basant sur les supports distribués, ces séances seront consacrées à la résolution de problèmes en interaction avec l enseignant et le groupe. IGI 1001 2013-2014 Semaine 38 39 40 41 42 43 45 46 47 48 49 50 51 2 3 Heure S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 C/TD 8 2 2 2 2 TD 10 2 2 2 2 2 TP 12 3 3 3 3 contrôles continus 1 1 contrôle Final en salle de TP : programme à mettre en œuvre avec le simulateur VISION 4 sur PC : durée 2 heures 2 7

Présentation [IGI1001] 3. Organisation de l unité Séances méthodologiques Apprentissage par exercices (APE) - travail personnel et en groupe C/TD1 C/TD2 C/TD3 C/TD4 Opérations arithmétiques dans les ensembles N et Z et indicateurs Z, C, V, N Organisation de la mémoire principale et accès aux données Structures de contrôles et boucles : algorithmes et organigrammes Structures de contrôles/ boucles et programmation ARM TD en salle machine - utilisation du simulateur VISION 4 sur PC TD1 TD2 TD3 TD4 ARM Cortex M3 : registres de données internes, calculs arithmétiques et indicateurs Z, C, V, N ARM Cortex M3 : organisation mémoire - modes d'adressage et accès aux données ARM Cortex M3 : structures de contrôles/ boucles et programmation ARM CORTEX M3 : Programmation des entrées -sorties TD en salle TD5 PROJET Travaux pratiques sur les Kits StellarisRobotic Evaluation Board TP1 TP2 TP3 TP4 E/S E/S Projet Projet 8

Opérations arithmétiques binaires [C/TD1] C/TD 1 Unité IGI 1001 Programmation des microprocesseurs Opérations Arithmétiques binaires 9

Opérations arithmétiques binaires [C/TD1] C/TD-1 : Opérations arithmétiques binaires Préparation de la séance : lire le support page 10 à page 19. Les notions/définitions sont accompagnées par des exemples et des exercices à faire. 1. Identifier les notions/définitions importantes, être capable de les expliquer. 2. Refaire les exemples illustrant ces notions. 3. les appliquer en faisant les exercices notés exercice à faire. Un bref rappel sur le système de numération binaire et la conversion (changement de base est donnée : page 21 à page 26. Pré-requis de la séance : cette séance s appuie sur les notions de base et fondamentales portant sur la représentation des nombres dans les ordinateurs, dont le codage des entiers naturels et des entiers. Le codage est traité dans l unité IGE-1001 (Noury Ludovic). 1. Introduction Les opérations considérées sont les opérations binaires : addition, soustraction, division, multiplication, comparaison. Les valeurs des opérandes, c'est-à-dire les données calculées par ces opérations et le résultat produit appartiennent à l ensemble des valeurs représentables ci-dessous en fonction de la représentation adoptée. Entiers naturels : les valeurs représentables des nombres entiers naturels codés en binaire sur n bits (Binary digit) sont : Nombres positifs Représentation sur n bits en base 2 0 0 0.. 0 0 1 0 0.. 0 1 2 0 0.. 1 0 1 0.. 0 0 1 1 1 1 Exemple : soit un nombre entier naturel codé sur 8 bits ou un octet (n = 8 bits) : Nombres positifs Représentation sur 8 bits en base 2 0 = valeur min 0000 0000 1 0000 0001 2 0000 0010 soit 2 8-1 =2 7 = 128 1000 0000 soit 2 8-1=255= valeur max 1111 1111 10

Opérations arithmétiques binaires [C/TD1] Entiers : par convention pour un nombre codé sur n bits, le bit de rang n-1 est appelé bit de signe, c est le bit de poids fort. Les valeurs représentables des entiers sur n bits sont : Valeur Représentation binaire sur bits Valeur minimale 1 0 0 0 0-1 1 1 1 1 1 0 0 0 0 0 0 Valeur maximale 0 1 1. 1 1 Ainsi sur n bits, on peut représenter des entiers à Exemple : pour n = 8 bits, ces valeurs sont : 2,...,2 n 1 n 1 1. Valeur Représentation binaire sur bits Valeur minimale soit (2 8-1 )=-2 7 = -128 1000 0000-1 1111 1111 0 0000 0000 Valeur maximale soit 2 8-1 -1 =2 7-1= 127 0111 1111 Le complément à 2 (noté C2) : n, Si = 1 permet de trouver la valeur absolue du nombre entier codé sur n bits. C1 est le complément à 1. Exemple : soit un nombre entier A codé sur 4 bits = 1001 ce nombre est négatif, le bit de poids fort = 1, c est le bit de signe. Le C2 permet de trouver sa valeur absolue : C2(1001) = C1 (1001) +1 = 0110 +1 = 0111, ce qui signifie que, donc A = -7. Remarque : dans les microprocesseurs, la taille n est fixe et peut être égale à : 8, 16, 32, 64, 128 bits. 11

2. Addition Binaire Opérations arithmétiques binaires [C/TD1] Les règles de l addition binaire sont données ci-dessous : x y s r 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 est la somme et représente la retenue. La somme est égale à : Avec : AND : ET logique, OR : OU logique XOR : OU exclusif La retenue que l on note simplement (2). On réalise ainsi un demi-additionneur avec 2 entrées et 2 sorties. L addition binaire est commutative et associative. En étendant cette opération à trois bits x, y et z, on obtient un additionneur complet, avec 3 entrées : et 2 sorties :. (1) 3. Opérations de base sur entiers naturels 3.1. Addition de deux entiers naturels Soit à additionner 2 nombres et codés sur bits et représentés respectivement par les suites : ; avec : bit de poids faible et : bit de poids fort et ; avec : bit de poids faible et : bit de poids fort La somme de peut être supérieure à la valeur maximale représentable sur bits, c'est-à-dire à et n est donc pas nécessairement représentable sur n bits. 12

Opérations arithmétiques binaires [C/TD1] La partie représentable de la somme est, est représentée en convention standard par la suite Rappelons que dans le cas d un nombre entier, le bit est le bit de poids fort, il représente le bit de signe par convention. Dans la représentation en complément à 2, un nombre négatif est codé par le complément à 2 de sa valeur absolue. Les sont obtenus à partir des, en appliquant l opération d addition binaire bit à bit de droite à gauche en reportant (on dit aussi en propageant) les retenues éventuelles. La retenue prise en compte au rang, est engendrée au rang pour, la retenue initiale. Un rang est aussi appelé un étage. La dernière retenue codée sur un bit, elle est engendrée au rang : Cette retenue est appelé report, en anglais Carry et noté C. sur D après la définition de la retenue, on a : Si la dernière retenue, la somme est représentable sur. Si la dernière retenue, la somme n est représentable sur bits on dit qu il y a débordement, en anglais overflow. Le nombre représenté par la suite est égale à : et non. (2) Remarque importante : Dans les microprocesseurs la valeur du report est donnée par le bit C appelé indicateur de Carry (ou Flag en anglais), il est en général mémorisée dans un registre interne du microprocesseur, appelé registre d état. Rappel : Un registre est formé par un ensemble de bascules. Pour mémoriser une information numérique codé en binaire sur n bits, il faut un registre comprenant n bascules. Le débordement dans l addition des entiers naturels est indiqué par l indicateur C = 1. On a un dépassement de capacité sur les entiers naturels. 13

Opérations arithmétiques binaires [C/TD1] Exemple : Addition binaire sur 8 bits r = report 1 0 0 0 1 1 1 0 a 1 1 0 0 0 1 0 1 b 1 1 1 0 0 0 1 1 a+b 1 0 1 0 1 0 0 0 Principe de l addition en base 2 : on additionne les bits colonne par colonne en commençant par le bit de poids faible (bit de rang 0). Le résultat de l addition précédente est capacité sur les entiers naturels. et C=1 dépassement de Exercice à faire : faire l opération 0000 0001 + 1111 1111, donner le résultat en binaire et sur 8 bits et l état de l indicateur C. Exemple : l opération 1100 0101 + 1110 0011, effectuée en Hexadécimale sur 8 bits (cette représentation permet de condenser l écriture en binaire) donne le résultat ci-dessous : Ainsi : r 0 a 0xC5 b 0xE3 a+b 0xA8 5 + 3 = 8 C + E = 12 + 14 = 26 = 16 + 10 ce que donne A en hexadécimal et la retenue C = 1. Le résultat et C=1 dépassement de capacité sur les entiers naturels. Vérification : En base 10, le nombre entier naturel a = 197, (c est à dire a = et b = 227, la somme. Cette valeur n est pas représentable sur 8 bits, car la valeur maximum représentable sur 8 bits est 255. Le résultat de l addition binaire que nous avons obtenu est 10101000 soit. Comme C, pour obtenir le résultat correct on procède comme suit : soit. La somme obtenue en hexadécimale est 0xA8, soit le résultat. Exercice à faire : Si on effectue la somme l état de C? Justifiez votre réponse. comme C=1, avec a et b codés sur 16 bits. Quel est 14

Opérations arithmétiques binaires [C/TD1] 4. Opérations sur les entiers 4.1. Addition en code complément à 2 (CC2) Soit 2 nombres représentés en code complément à 2, on a la relation suivante : (3) La relation (3) montre que si alors l addition de et est correctement représentée par l addition standard. L indicateur V (overflow) indique si le résultat de la somme de 2 entiers sur n bits est représentable sur n bits. Le tableau ci-dessous donne les différents cas possibles de l addition de 2 nombres entiers en CC2 sur n bits et l état de l indicateur V (dépassement de capacité, overflow). V = 1 si le résultat de la somme de a et b ne peut pas être représenté en sur n bits : : est le report de l addition des bits de rang : est le dernier report, il représente le report de l addition des bits de rang : est le bit de poids de poids fort de la somme, c est le bit de signe de la somme. de Si le résultat de l addition est : s est représentable sur n bits s est non représentable sur n bits s est toujours représentable sur n bits s est non représentable sur n bits s est présentable sur n bits Remarque importante : le débordement dans le cas de l addition standard est signalé par positionnement de l indicateur C(arry) à 1., ce qui engendre le Le débordement dans le cas de l addition en CC2 est indiqué par l indicateur V=1 (overflow). 15

Exemple : r = report 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 a 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 b 1 0 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 1 a+b 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 V=C=1 V=1 et C=0 V=0 et C=1 V=C=0 débordement débordement correct correct r n =1 ; r n-1 =0 r n =0 ; r n-1 =1 r n =1 ; r n-1 =1 r n =0 ; r n-1 =0 Cet exemple vérifie que si représentable en CC2 sur 8 bits. alors il n y a pas de débordement et la somme est Remarque : C=1 n implique pas que V soit égal à 1. Exercice à faire : illustrer les cas précédents par des exemples d opérations en binaire sur 16 bits. 4.2. Soustraction par addition en CC2 On peut calculer la soustraction de en effectuant l opération. Les résultats de sont obtenus modulo en effectuant l addition. 5. Multiplication ou division par une puissance de 2 5.1. Multiplication par La multiplication d un entier codé sur par la suite de bits par ( est obtenue par un décalage de cette suite de bits de positions vers la gauche. Les bits de plus faible poids sont remplacés par des Si le résultat n est représentable, un débordement est généré. Exemple : soit l opération 10*4 = 40. Cette opération réalisée sur 8 bits donne : 10 = 0000 1010 0000 1010 décalé à gauche de 2 postions donne : 0010 1000 soit 2 3 + 2 5 = 8 + 32 = 40. Exercice à faire : à quoi correspond l opération 16*3.

5.2. Division par Opérations arithmétiques binaires [C/TD1] La division d un entier codé sur par la suite de bits par ( est obtenu par un décalage de cette suite de bits de positions vers la droite. Le bit de signe est recopié dans les bits de poids le fort. Ce type de décalage est dit arithmétique, dans le décalage dit logique, les poids fort sont remplies de 0. de Exemple : soit à réaliser l opération 20 = 16 +4 = 0001 0100 et 0001 0100 décalé à droite d une position donne 0000 1010 soit 10. Exercice à faire : à quoi correspond l opération 17

Compléments [C/TD1] Compléments 1. Opérations logiques 1.1. Tables de vérité a b ET OU OU Exclusif 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 a b NON ET NON OU NON Exclusif 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 Le complément appelé NON ou NOT : si alors et si alors Le ET appelé AND : Le OU inclusif appelé OU ou OR : et le NON ET appelé NAND. et le NON OU appelé NOR. Le OU Exclusif appelé XOR et le NON OU Exclusif appelé XNOR. 2. Soustraction binaire Les règles de la soustraction sur les bits sont données ci-dessous : x y s_ = x - y r_ 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 On a : et, est appelé «emprunt» (borrow) Exemple : 30 18 = 12 soit en binaire : 0001 1110 0001 0010 = 0000 1100 = 18

Compléments [C/TD1] 3. opération de décalage Décalage logique à gauche de k positions : Exemple : décalage logique à gauche avec k = 1 : 00000110 00001100 Cette opération revient à faire une multiplication par 2 (cas où k=1) Décalage logique à droite de k positions : Exemple : décalage logique à droite avec k = 1 : 00011110 00001111 Cette opération revient à faire une division par 2 (cas où k=1) 4. Multiplication binaire Les règles de la multiplication sur les bits sont données ci-dessous : x y 0 0 0 0 1 0 1 0 0 1 1 1 Soit le nombre défini par la suite binaire : 00011100 (ce nombre est égal à 28), le décalage à gauche d une position de cette représentation binaire donne : 00111000 soit 56. Ce qui correspond à une multiplication par 2. Soit le nombre défini par la suite binaire : 00011100, le décalage à droite d une position donne : 00001110 soit 14. Ce qui correspond à une division par 2. Exemple : soit l opération 39 x 6 = 234, multiplication de 2 entiers naturels : 1 0 0 1 1 1 39 x 1 1 0 6 + 1 0 0 1 1 1. + 1 0 0 1 1 1.. = 1 1 1 0 1 0 1 0 234 19

Exercices [C/TD1] Exercices séance C/TD1 : Opérations arithmétiques binaires 1. Opérations sur les entiers naturels 1.1 Coder en binaire sur 8 bits les entiers naturels des opérations d addition ci-dessous et faire leurs additions sur 8 bits : 28 +30 ; 255 +1 1.2 Coder en hexadécimal sur 8 bits les opérations d addition ci-dessous et faire leurs additions sur 8 bits : 254 + 1 ; 128 + 128, 133 + 163 1. 3 Pour chacune de ces opérations, on donnera : Le résultat sur 8 bits L état de l indicateur C positionné à 1, sa signification et l interprétation du résultat de l opération. 2. Opérations sur les entiers 2.1 Donner en CC2 8 bits les nombres 61 et -61 et faire leur somme sur 8 bits. 2.2 Effectuer en CC2 sur 8 bits les opérations suivantes : 1+(-2) ; 51 +127 ; (-3) + (-127) ; (-127) + 127 ; (-63) + ( 63). Pour chaque opération on donnera le résultat sur 8 bits et l état des indicateurs C et V, la signification de chacun d eux et on expliquera comment on les utilise pour interpréter le résultat de l opération. 2.3. Coder sur 16 bits en CC2 l opération (-127) + 127. Donner son résultat sur 16 bits et les états des différents indicateurs C et V. Que peut-on conclure? 3. Opérations sur les entiers codés sur 32 bits Effectuer en hexadécimal en CC2 sur 32 bits les opérations suivantes : (-1) + (-2) ; (-3) + (-127) ; (-127) + (127) ; (-63) + (-63), ainsi que l addition du plus grand nombre entier non signé plus 1. Pour chaque opération on donnera le résultat sur 32 bits et l état des indicateurs C et V, la signification de chacun d eux et on expliquera comment on les utilise pour interpréter le résultat de l opération 4. Opérations de multiplication/décalage 3.1 Effectuer l opération : 3.2 Effectuer pour les nombres 0x01F1 et 0xFF85 les opérations suivantes : Un décalage à gauche de 2 positions Un décalage arithmétique à droite de 2 positions Un décalage logique à droite de 2 positions Donner pour chacune de ces opérations la valeur du résultat. 20

Système de numération - conversion [Rappels] Rappels : système de numération - conversion Introduction : Pour être traitées, les informations sont temporairement mémorisées dans un emplacement de la mémoire principale. Cet emplacement est aussi appelé case mémoire. Elles peuvent être rangées temporairement dans les registres internes du microprocesseur. Si l information est représentée sur bits, par convention du rang de droite à gauche, on peut avoir valeurs distinctes de l information. On peut donc représenter une donnée de différents types par exemples : un nombre entier, un nombre fractionnaire, une chaîne de caractères. 1. Système de numération de base Tout entier naturel peut être représenté par une suite de chiffres de la base :... b où les sont les chiffres de la base. Ce nombre en notation étendue (ou positionnelle) a pour valeur : avec et. est la valeur attachée à la position du chiffre. Généralement, tout nombre est représenté dans le système de numération par une suite de chiffres qui peut comprendre une virgule relative au système de base, les valeurs de position des chiffres situés à droite de la virgule sont des puissances négatives de la base. Exemples : - système de numération décimal : les chiffres à Le nombre décimal 245 est ainsi égal à. - système de numération hexadécimal : les chiffres à (1) Le nombre est ainsi égal à. Ce nombre est aussi noté 0xF5 ou, pour indiquer qu il est exprimé en hexadécimal. - système de numération binaire : les chiffres binaires (bit = binary digit), Le nombre est égal à. On le note : 0 1 0 1. 21

Système de numération - conversion [Rappels] Le tableau ci-dessous représente le code binaire pur ou naturel sur 4 bits et sa correspondance en hexadécimal et décimal : Chiffres HEX. Valeurs décimales Équivalence en binaire 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 Le nombre décimal 11,25 s écrit :. Ce nombre comporte deux parties : la partie entière = 11 et la partie fractionnaire = 25. Le nombre binaire Remarque : plus la base nombre. est faible plus il faut de chiffres pour représenter un même 2. Principe de codage en base Il repose sur le principe de la division entière : pour convertir le nombre en base : (2) (3) Le code de a dans la base b est donc b 22

Système de numération - conversion [Rappels] Exemple : soit à convertir le nombre a = 15 10 dans la base b = 2. 3. Principe de l algorithme de codage d un entier positif en base Données en entrées : l entier à coder et la base de numération Tant que le quotient n est pas nul faire Diviser successivement le nombre par la base Fin Tant que Résultat : la représentation du nombre dans la base est donnée par l ordre inverse des restes des différentes divisions : du premier au dernier restes écrits de gauche à droite. 4. Conversion 4.1. Conversion de la base en décimal : Exemple : binaire décimal :. Le nombre binaire est représenté comme la somme de produits entre chaque chiffre binaire et sa valeur de position. 23

Système de numération - conversion [Rappels] 4.2. Conversion Hexadécimal décimal et décimal Hexadécimal : Exemples : Hexadécimal décimale : ( ) 16 ou ( ) H = Décimal Hexadécimal : Donc 175 = ( ) 16 ou ( ) H soit 0xAF 4.3. Conversion Hexadécimal binaire et binaire Hexadécimal : Exemples : Hexadécimal binaire : ( ) 16 ou ( ) H donc 0xAF = 1010 1111 Binaire Hexadécimale : 1000 1001 = (89) 16 ou (89) H soit 0x89 5. Le code DCB (Décimal Codé Binaire ou 8421 ou BCD) : Chiffre décimaux Code DCB 8 4 2 1 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 Le tableau ci-dessus représente le code DCB à 4 bits (c est une restriction du code binaire pur aux chiffres décimaux de 0 à 9), les bits sont affectés de la gauche vers la droite des poids 8 ( ), 4 ( ), 2 ( ) et 1 ( ). La représentation BCD du nombre décimal 145 est 0001 0100 0101, chaque chiffre nécessite au moins 4 bits. Ce codage est appelé code DCB 8-4-2-1 pondéré (dit code pondéré) : il consiste à affecter des poids aux bits. Il est utilisé dans les systèmes d affichage des chiffres décimaux (calculatrice). Remarque : un nombre décimal peut être codé directement (représentation binaire directe, appelé aussi code binaire pur ou naturel) en utilisant l algorithme de codage en base b. Ce codage est utilisé pour effectuer des opérations mathématiques ( ). Le code binaire pur présente l inconvénient que plusieurs bits changent lors du passage d une combinaison à une autre ; il existe une autre représentation appelée code Gray ou binaire réfléchi. Dans le code Gray, seul un bit change d état lors du passage d une combinaison à une autre. Ce code n est pas pondéré et donc pas adapté pour le calcul numérique. Ce code est utilisé pour la visualisation d informations ou pour la conversion de grandeurs analogiques. 24

Système de numération - conversion [Rappels] 6. Tableau récapitulatif des différents codes binaires Binaire naturel Hexadécimal Décimal Gray ou binaire réfléchi BCD 0000 0 0 0000 0000 0001 1 1 0001 0001 0010 2 2 0011 0010 0011 3 3 0010 0011 0100 4 4 0110 0100 0101 5 5 0111 0101 0110 6 6 0101 0110 0111 7 7 0100 0111 1000 8 8 1100 1000 1001 9 9 1101 1001 1010 A 10 1111 0001 0000 1011 B 11 1110 0001 0001 1100 C 12 1010 0001 0010 1101 D 13 1011 0001 0011 1110 E 14 1001 0001 0100 1111 F 15 1000 0001 0101 7. Code ASCII (American Standard Code for Interchange of Information) en hexadécimal Ce code permet de représenter sur 7 bits l'ensemble des caractères alphanumériques, des symboles et des commandes de transmission, le code du caractère est 41 H soit 0x41, le code de CR (Carriage Return retour à la ligne) est 0D H soit 0x0D et le code de LF (Line Feed - saut de ligne) est 0A H soit 0x0A. Code 0 1 2 3 4 5 6 7 8 9 A B C D E F 0x00 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT NP CR SO SI 0x10 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 0x20 SP! " # $ % & ' ( ) * +, -. / 0x30 0 1 2 3 4 5 6 7 8 9 : ; < = >? 0x40 @ A B C D E F G H I J K L M N O 0x50 P Q R S T U V W X Y Z [ \ ] ^ _ 0x60 ` a b C D E F G h I J K L m n O 0x70 p q R S T U V W x Y Z { } ~ DEL L «UNIversal CODE» UNICODE code les caractères sur 16 bits, il est destiné à remplacer les tables ASCII ou ANSI. 25

Compléments [Rappels] Compléments 1. Ordinateur : machine informatique capable d exécuter un programme. La structure d un ordinateur modèle de Von Neumann comprend le processeur (microprocesseur), la mémoire principale et les organes d entrées/sorties (écran, clavier, disque dur). 2. Mémoire : dans un ordinateur, il existe plusieurs types de mémoires : par exemple la mémoire principale, qui est externe au processeur. Cette mémoire stocke (mémorise) entre autres les informations utilisées par le processeur lors de l exécution d un programme. On peut écrire une valeur dans une case mémoire et on peut lire le contenu d une case mémoire. Chaque case mémoire contenant une information codée sur 8 bit (un octet) est identifiée par un numéro appelé adresse (adresse de la case mémoire). 3. Registre : les registres se trouvent à l intérieur du processeur, leur nombre est limité. D accès rapide, ils permettent la mémorisation temporaire d informations. On peut lire et écrire dans des registres. Les ordinateurs PC sont équipés de différents types de processeurs, par exemple le processeur AMD Athlon II X2 équipant les PC (2 cores, fréquence de fonctionnement 2,9 Ghz, mémoires caches internes, des registres internes de 64 bits). II existe aussi d autres types de microprocesseurs, par exemples : 8 bits, 16 bits, 32 bits 4. Représentation de données : Type de donnée Architecture 32 bits 64 bits Char 8 bits 8 bits Short 16 bits 16 bits Int 32 bits 32 bits Long 32 bits 64 bits long long 64 bits 64 bits pointeur (adresse) 32 bits 64 bits 5. Algorithme : ensemble de règles opératoires dont l application permet de résoudre un problème (par exemple : trier un ensemble de nombres entiers naturels du plus petit au plus grand) en un nombre fini d opérations (par exemples : addition, multiplication, comparaison). Une fois l algorithme défini, on écrit son programme. L ordinateur exécute le code correspondant à ce programme (code exécutable). 6. Programme : c est la réalisation ou l implémentation d un algorithme au moyen d un langage informatique donné sur un ordinateur (machine informatique) donné. 26

Architecture d un ordinateur [C/TD2] C/TD 2 Unité IGI 1001 Programmation des microprocesseurs Ordinateur : Mémoire principale organisation et accès aux données 27

Architecture d un ordinateur [C/TD2] C/TD-2 : Ordinateur : Mémoire principale organisation et accès aux données Préparation de la séance : lire le support (page 28 à page 44). Les notions/définitions sont accompagnées par des exemples et des exercices à faire. 1. Identifier les notions/définitions importantes, être capable de les expliquer. 2. Refaire les exemples illustrant ces notions. 3. et les appliquer en faisant les exercices. 1. Architecture d un ordinateur On peut décrire l architecture d un ordinateur, c'est-à-dire son organisation, en se basant sur le modèle de von Neumann. John Von NEUMANN (1903 1957), mathématicien américain d origine hongroise, a donné son nom à l architecture utilisée dans la plupart les ordinateurs. Ce modèle est composé de 3 composants : le processeur, la mémoire principale et les entrées/sorties. 28

Architecture d un ordinateur [C/TD2] L architecture d un ordinateur basée sur ce modèle comprend : le microprocesseur : c est l unité de traitement de l information : exécution des instructions et des traitements (opérations de calculs) des données. Il comprend 2 parties : 1. l Unité Arithmétique et Logique (U.A.L) ou unité de traitement. Cette unité effectue les opérations de base : opérations arithmétiques (addition, soustraction, multiplication, division) et opérations logiques (ET, OU). 2. L unité de contrôle qui séquence les opérations. la mémoire principale : c est l unité de stockage temporaire des informations nécessaires à l exécution d un programme : instructions (code du programme) et données. les entrées/sorties : unités d E/S, elles permettent la communication entre {l ensemble processeur mémoire} et les unités périphériques (disque dur, caméra, clavier). Ces communications se font à travers des bus : ce sont des supports physiques de transfert d informations. 29

Architecture d un ordinateur [C/TD2] Le bus microprocesseur - mémoire est composé de 3 bus : le bus de données : bus bidirectionnel pour l échange d informations entre le microprocesseur ( et la mémoire le bus d adresse : bus unidirectionnel pour adresser la mémoire, il indique la case mémoire à laquelle le microprocesseur veut accéder (accès soit en lecture soit en écriture) le bus de contrôle : il comprend différents signaux de contrôle dont le signal de lecture/écriture appelé R/ pour Read/Write. Si R/ = 0 le microprocesseur demande une écriture, sinon une lecture. La taille en bits de ces bus est de : pour le bus d adresse, pour le bus de données et pour le bus de contrôle. dépendent du type de microprocesseur utilisé. L espace mémoire adressable est fixé par et il est égal à, les adresses sont comprises dans l intervalle. 30

Architecture d un ordinateur [C/TD2] Exemple : si, le bus d adresse comprend 16 lignes (16 fils) notées :, est le bit de poids faible. La taille en octets de l espace adressable est (1 kilo = 1024 = ). octets soit 64 kilo octets, c'est-à-dire Adresse sur 16 bits en Hexadécimal 0000H Cases mémoire 1 er élément...... 1000H.. FFFFH.. Dernier élément Remarque important : une adresse identifie l emplacement en mémoire d un élément codé sur 8 bits (soit un octet). 1.1. Architecture interne simplifiée d un microprocesseur L architecture interne simplifiée d un microprocesseur comprend une unité de contrôle (appelée UC), une unité de calcul (appelée unité arithmétique et logique notée U.A.L) et des registres internes. 31

Architecture d un ordinateur [C/TD2] L unité de contrôle analyse le code de l instruction à exécuter et séquence dans le temps les actions internes élémentaires permettant la réalisation de l instruction, c'est-à-dire la production du résultat. Sous le nom de partie opérative on trouve les registres internes et l UAL. Cette partie réalise les actions élémentaires nécessaires à l exécution de l opération. L UAL réalise les opérations arithmétiques et les opérations logiques. Les registres internes stockent temporairement les opérandes, c'est-à-dire les données en entrée des opérations et les résultats intermédiaires des calculs. 2. Structures de données de type tableau et implantation en mémoire Les données traitées par le microprocesseur sont stockées temporairement en mémoire principale. Ces données sont organisées aussi bien au niveau algorithme que programme sous la forme de structures : elles sont déclarées avec leurs types. Un type constitue une description de la représentation interne des données en machine. Une structure de données est l implémentation explicite d un ensemble organisé de données avec les opérations d accès, de construction et de modification associées. Dans ce qui suit, on s intéresse uniquement au type élémentaire tableau. 2.1. Tableau à une dimension (1D) Un tableau à une dimension est une liste contiguë d éléments de même type. Chaque élément est localisé par son indice ou son adresse. Exemple : on peut illustrer un tableau de taille de la façon suivante : 0 1 i n-1 Ce tableau est implémenté sous la forme de principale. emplacements consécutifs en mémoire La zone mémoire attribuée à un tableau est définie par : L adresse de début d implantation du tableau La taille des éléments stockés : un élément peut être de taille 8/16/32/64 bits Le nombre d éléments stockés Exemple : Une chaîne de caractères «bonjour» peut être implantée sous la forme d un tableau de caractères. Si ce tableau commence à l adresse 0x1000 (adresse en hexadécimal de début d implantation en mémoire de ce tableau), la taille de ce tableau est, la chaîne contient 7 caractères. 32

Architecture d un ordinateur [C/TD2] Chaque élément du tableau représente un caractère codé en ASCII et prend un emplacement en mémoire. Chaque élément du tableau, c'est-à-dire chaque code ASCII d un caractère de la chaîne est stocké sous la forme d un octet. Adresse sur 16 bits codée en Hexadécimal 0000H..... 1000H Cases mémoire 1er élément de T = Code ASCII de b = 0x62........ 1006H Dernier élément de T = code ASCII de r = 0x72. 2.2 Tableau à deux dimensions (2D) Un tableau 2D est implanté de façon contiguë en mémoire, ligne par ligne ou colonne par colonne. L exemple ci-dessus illustre un tableau de taille, étant le nombre de lignes et le nombre de colonnes. E 11 -- -- -- -- E 1n E m1 E mn L implantation ligne/ligne de ce tableau est représentée ci-dessous : E 11 -- -- E 1n E 21 -- E 2n -- -- -- -- -- E m1 -- -- E mn Ligne 1 ligne 2 ligne m Un exemple de tableau 2D est l implantation en mémoire d une image en niveau de gris de taille pixels. Un pixel définit un point de l image et est représenté par la valeur de son intensité lumineuse appelé niveau de gris. 33

Architecture d un ordinateur [C/TD2] Dans ce cas, un pixel, est un nombre, est codé sur 8 bits, il est compris entre 0 et 255, soit 256 valeurs possibles. Ainsi, on peut considérer une image comme une matrice appelée aussi un tableau 2D. Chaque point de l image est représentation par sa valeur codée sur 8 bits. Cette valeur représente le niveau de gris du pixel considéré. Un niveau de gris correspond à la luminosité du pixel. 0 correspond au noir et la valeur 255 (soit 0xFF) correspond au blanc. 34

Architecture d un ordinateur [C/TD2] 3. microprocesseur ARM Cortex M3 : registres internes et organisation de la mémoire Le Cortex M3 est construit autour d une architecture de type «load store» (chargement/rangement). Il utilise des données de 32 bits et dispose d un bus d adresse de 32 bits. Au cours du fonctionnement, les données en mémoire principale sont d abord chargées dans les registres internes du microprocesseur, lequel effectue les opérations sur ces registres et, par la suite, range le résultat en mémoire. 3.1. Les registres internes Le microprocesseur cortex M3 dispose de 17 registres (R0 à R15, et PSR), la taille de chaque registre est de 32 bits : 13 registres à usage général : R0 à R12. R0 à R7 sont dits «low registers» et R8 à R12 «high registers», ces derniers possèdent des restrictions d emploi par rapport à certaines instructions. Ces registres ne sont accessibles que par paquet de 32 bits. Un compteur ordinal ou Program counter : R15 qui contient l adresse en mémoire de la prochaine instruction à exécuter. Le bit 0 de ce registre est toujours à 0 (adresse paire). Comme les instructions sont codées sur 16 bits (cas : Thumb) ou 32 bits (Thumb2), elles occupent au moins 2 adresses consécutives. Un registre d état (Program Status register) : xpsr avec x pouvant être A=Application, I=Interrupt ou E=Execution. 35

Architecture d un ordinateur [C/TD2] Important : Les bits 28 à 31 de ce registre contiennent les indicateurs/drapeaux (Condition Code Flags) : N bit 31 bit de poids fort de APSR Recopie le bit de poids fort du résultat, si N = 1 alors le résultat <0 Z bit 30 de APSR Z = 1 si le résultat = 0 C bit 29 de APSR Si C = 1 il y a un débordement de la représentation non signée : entiers naturels V bit 28 de APSR Si V = 1 il y a un débordement de la représentation signée : entiers Exemples : Opération d addition et positionnement des différents indicateurs. FFFF FFFFh 8000 0000h 7FFF FFFFh + 1 + 8000 0000h + 1 = 0000 0000 = 0000 0000 = 8000 0000h C = 1 et Z = 1 C = Z = V = 1 N = V = 1 A ces registres, on ajoute 2 registres spéciaux : R13 (registre pointeur de pile), R14 (Link register). Le registre R15 est aussi considéré comme un registre spécial. 36

Architecture d un ordinateur [C/TD2] 3.2. Organisation mémoire Arm Cortex-M3 L espace mémoire du Cortex-M3 est de 4Go, soit 2 32 adresses consécutives (bus d adresse de 32 bits). Une adresse mémoire correspond à un octet. Tous les accès à la mémoire se font via des instructions Load ou Store. 37

Architecture d un ordinateur [C/TD2] Le rangement des données en mémoire se fait selon la norme little endian. L exemple cidessous (mémoire vue comme une suite d octets) illustre cette norme : rangement du mot 0xDDCCBBAA à l adresse 0x00001000 et du demi-mot 0x5566 est rangé à l adresse 0x00000000 : Adresse sur 32 bits codée en Hexadécimal Cases mémoire 0xFFFFFFFF.... 0x00001003 0x00001002 0x00001001 0x00001000 0XDD 0xCC 0xBB 0xAA.. 0x00000001 0x0000 0000 0x55 0x66 Exemple : mot de 32 bits (4 octets) rangé à l adresse 0x0001000 : 0xDD 0xCC 0xBB 0xAA 0x00001000 Exemple : organisation par mots de 16 bits (2 octets) à l adresse 0x00001000 0xBB 0xAA 0x00001000 38

Architecture d un ordinateur [C/TD2] 3.3. ARM Cortex M3 : exemples de quelques instructions arithmétiques et logiques Soit la syntaxe suivante : Code opération opérande 1, opérande 2, {opérande 3} Code opération = opération à effectuer Opérande 1 = destination, contient le résultat de l opération Exemple : Cas d un opérande immédiat : MOVS R6,#0x55 #0x55 est une constante (valeur immédiate), on a R6 0x0000 0055 Le suffixe S indique le positionnement des indicateurs (flags), dans cette exemple l instruction MOVS ne positionne aucun indicateur à 1 donc on aura : N = Z = C = V = 0. Remarque : l opérande immédiat 0x55 fait partie du code de l instruction. Comme le code d une instruction peur être soit codé sur 16 ou 32 bits, la valeur de l opérande immédiat (constante) est limitée par la taille du code de l instruction. Les opérandes 2 et 3 sont les opérandes source. 3.3.1 Instruction d addition : ADD ADD{S}<c> {R d,}<r n >,#<const> R d R n + const {S} : est un suffixe optionnel, s il est spécifié alors les indicateurs seront positionnés à 1 selon le résultat de l opération sur 32 bits. <c> : est un suffixe optionnel, si la condition spécifiée est vraie, l instruction sera exécutée. R d R n : est le registre destination, il contient le résultat de l opération : est le registre contenant l opérande source #<const> : est une constante 39

Architecture d un ordinateur [C/TD2] Exemple : ADD R1,#5 R1 R1 + 5 Exercice à faire : Donner la séquence d instruction pour réaliser les opérations suivantes R1 R1+1 Si R1 = 0 alors faire R6 R5 + R6 On supposera que l état initial de R1 = 0xFFFFFFFF Rappel : si R1 = 0 l indicateur Z = 1. Le suffixe <c> dans le cas de cette condition s écrit EQ (pour Equal). ADD{S}<c> {R d,}<r n >,<R m >{,<shift>} R d R n + shift(r m ) <R m > : contient la valeur à décaler <shift> : opérateur optionnel indique le décalage de bits du registre R m Exemple : ADD R1,R2,R2, LSL #2 R1 R2 +4*R2 : les bits du registre R2 sont décalés à gauche de 2 positions (Logical Shift Left), ce qui revient à multiplier le registre R2 par 4. Exercice à faire : soit l opération y x 6x 7x, on suppose que x=3 est contenu dans le registre R5, le résultat y est rangé dans R6. Donner l instruction qui réalise cette opération. 3.3.2 Instruction logique ET : AND AND{S}<c> {R d,}<r n >,#<const> R d R n ET const AND{S}<c> {R d,}<r n >,<R m >{,<shift>} R d R n ET shift(r m ) Exemple : ANDS R1,R1,R2 R1 R1 ET R2 si R1 = 0xFFFFFFFF et R2 = 0 alors le résultat de cette instruction est R1 = 0x00000000 et l indicateur Z = 1. Exercice à faire : Si R1 contient la valeur 0xFFFFFFFF, donner l instruction qui permet d obtenir le résultat suivant : R1 = 0XFFFFFFF0 40

3.3.3. Instructions de décalage/rotation Architecture d un ordinateur [C/TD2] 3.3.3.1. LSL : décalage logique à gauche, ce décalage introduit des zéros à droite, le dernier sortant affecte l indicateur C. LSL{S}<c> {R d,}<r n >,#<imm> R d R m <<imm LSL{S}<c> {R d,}<r n >,<R m > R d R m <<R m Exercice à faire : illustrer par un exemple cette instruction et vérifier que le résultat obtenu est correct. 41