INFORMATIQUE INDUSTRIELLE

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

Structure d un programme

Programmation assembleur : aperçu

Architecture des ordinateurs

Logiciel de base. Première année ENSIMAG

Architecture des ordinateurs

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

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

4. Initiation à l'assembleur

Déprotection semi-automatique de binaire

Département informatique de l université d Angers

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

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

Rappels d architecture

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

Ordinateurs, Structure et Applications

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

Rappels Entrées -Sorties

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Jeu d instructions NIOS II

Initiation à la sécurité


Principe de fonctionnement des périphériques des ordinateurs en vue de la programmation. Patrick Cégielski

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

3. Structure des ordinateurs. 3.1 L' Unité Centrale (UC) ou processeur (Central Processing Unit CPU)

Désobfuscation automatique de binaire - The Barbarian Sublimation

Conception de circuits numériques et architecture des ordinateurs

ANALYSE TRAMEs LIAISON SERIE

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

GlobalScape Secure FTP Server Buffer Overflow

Architecture des ordinateurs Introduction à l informatique

Comprendre telock 0.98 et private versions.

Le langage C. Séance n 4

Licence Sciences et Technologies Examen janvier 2010

Playing with ptrace() for fun and profit

Réalisation d un OS 32 bits pour PC(x86)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Les techniques de protection du logiciel

Compilation (INF 564)

Introduction...6. Assembleur, philosophieet atouts...8. Avantages et inconvénients de l assembleur...9. Que programmer en Assembleur?.

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

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

Les failles Format String

CM2 L architecture MIPS32

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

Exécution des instructions machine

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

Algorithmique et Programmation, IMA

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

Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p.

Architecture des ordinateurs. Loïc Cuvillon. 20 novembre 2013

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Chap III : Les tableaux

PIC : COURS ASSEMBLEUR

Conventions d écriture et outils de mise au point

Introduction Damien Nouvel

Programmation Bas Niveau

TD Architecture des ordinateurs. Jean-Luc Dekeyser

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

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

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

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

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

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

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

Programmation en langage C

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

DNS Server RPC Interface buffer overflow. Céline COLLUMEAU Nicolas BODIN

Programmation impérative

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Olivier Mondet

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

Mathématiques appliquées à l informatique

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

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

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)

Informatique Générale

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

Master d'informatique 1ère année. Réseaux et protocoles. Architecture : les bases

Les vulnérabilités du noyau. LECORNET Olivier LEGROS Bruno VIGIER Nicolas Promo 2005

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

Introduction à la Programmation Parallèle: MPI

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

Claude Delannoy. 3 e édition C++

Introduction aux buffer overflow, CS335

Programmation système I Les entrées/sorties

IV- Comment fonctionne un ordinateur?

Cours d Algorithmique et de Langage C v 3.0

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

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

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

V- Manipulations de nombres en binaire

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

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Les attaques par corruption de mémoire Synopsis Mickael Deloison 22/10/2008

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

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Documentation d information technique spécifique Education. PGI Open Line PRO

Transcription:

INFORMATIQUE INDUSTRIELLE TR 1. 1

0. Préambule INFORMATIQUE INDUSTRIELLE : INFORMATIQUE AVEC CONTRAINTE DE TEMPS INFORMATIQUE AVEC PERIPHERIQUES D E/S INFORMATIQUE AVEC CONTRAINTE DE TEMPS Intervention sur le langage de programmation Le langage assembleur. Intervention sur le système d exploitation Fonctionnement multitâche. Processus Processus P3 Processus P2 Processus P1 Temps Inactif (en sommeil, attente) Actif Changement de contexte (sauvegarde des registres...) TR 1. 2

Intervention sur l architecture de la machine Machine parallèle. Processus Processus P3 Processus P2 Processus P1 Temps Inactif (en sommeil, attente) Actif INFORMATIQUE AVEC PERIPHERIQUES D E/S Ordinateur Adresse physique des ports d'e/s Programme Driver Carte Contrôleur de périphérique de périphérique CAN CNA Périphérique analogique Adresse physique des ports d'e/s Périphérique numérique Programme Driver de périphérique Carte Contrôleur de périphérique TR 1. 3

Plan du Cours INFORMATIQUE INDUSTRIELLE (II) + REGULATION (RI) COURS + TP AEMBLEUR 80x86-Pentium 1. ARCHITECTURE DU 80x86-Pentium 2. SOUS-PROGRAMMES AEMBLEUR SYSTEMES TEMPS REEL 3. SYSTEMES TEMPS RÉEL (TR) PERIPHERIQUES : INTERFACES d E/S / FILTRAGE 4. TUTORIAL LabWindows/CVI 5. LE PIO 8255 (Interface parallèle) 6. L UART 8250 (Interface série) 7. FILTRAGE NUMERIQUE TEMPS DIFFERE REGULATION 1. SIMULATION 2. CONTRÔLE d un processus électrique 3. CONTRÔLE d un processus électromécanique 4Annexe.CONTRÔLE d un processus thermique SYSTEMES A P - ROBOTIQUE (sous réserve). SYSTEMES à P. ROBOTIQUE PROJET. PROJET TR 1. 4

Contrôle des connaissances Projet (II ou RI) + TP. Projet TP 1 si travail satisfaisant, -1 sinon 0 si travail moyen. Note globale TP = +2 si tous TPs OK. Note d Informatique Industrielle Note Projet + Note globale de TP. Bibliographie [5] H. Nussbaumer «Informatique Industrielle II» PPR [8] A. Schiper «Programmation concurrente» PPR [10] D. Tschirhart «Commande en Temps Réel» Dunod [11] P. Wratil/R. Schmidt «Contrôle mesure régulation sur PC» Radio TR 1. 5

1. ASM 80x86-Pentium : Architecture Mémoire BUS (16 bits) { Unité d'interface ES CS FS GS Registres 16 bits Queue d'instructions 5 4 3 2 1 Système de contrôle BUS (32 bits) { Unité d'exécution EBX EDX EBP EDI EIP EAX ECX ESP ESI EFL Registres 32 bits Registre 16 bits UAL FLAGS TR 1. 6

2. Registres du 80x86-Pentium AX (2 Octets) EAX 4 Octets (32 bits) EBX ECX EDX AH AL 1 Octet (8 bits) BX BH BL BASE CX CH CL COUNT DX DH DL DATA ACCUMULATOR }Registres généraux ESP 4 Octets EBP ESI EDI SP BP SI DI (2 Octets) STACK POINTER } Registres pointeurs BASE POINTER SOURCE INDEX } Registres index DESTINATION INDEX CS (2 Octets) CODE SEGMENT DATA SEGMENT ES FS STACK SEGMENT EXTRA SEGMENT }Registres de segment GS EIP (4 Octets) INSTRUCTION POINTER Registre Compteur de programme EFL O D I T S Z A P C FLAGS Registre des indicateurs TR 1. 7

3. La segmentation REGISTRES MICROPROCEEUR CS ES Les segments peuvent être :. disjoints. recouverts. partiellement recouverts MEMOIRE RAM Adresse la plus basse CODE DONNEES PILE EXTRA Adresse la plus haute Segmentation de la mémoire centrale ( RAM) TR 1. 8

Adressage physique Adresse physique sur bus 32 bits : 2 parties :. une partie segment, notée SEGMENT sur 16 bits. une partie offset par rapport au segment SEGMENT, notée OFFSET sur 32 bits. Au total : Adresse = SEGMENT:OFFSET Calcul de l adrese physique : 15 0 Registre segment (16 bits) + 31 0 Registre offset (32 bits) = 35 0 Adresse physique (36 bits) Adresse = SEGMENT * 16 + OFFSET TR 1. 9

Modes d adressage Adresse effective MEMOIRE (EBP) (EBX) (ESI) (EDI) (EBP) + MEMOIRE (EBX) + MEMOIRE (ESI) + MEMOIRE (EDI) + MEMOIRE (EBP) + (ESI) (EBP) + (EDI) (EBX) + (ESI) (EBX) + (EDI) (EBP) + (ESI) + MEMOIRE (EBP) + (EDI) + MEMOIRE (EBX) + (ESI) + MEMOIRE (EBX) + (EDI) + MEMOIRE (EIP) (ESP) (EDI) Par rapport au segment Interdit CS ES 4. Le registre des indicateurs (FLAGS) (4 Octets) O D I T S Z A P C FLAGS TR 1. 10

5. Rangement mémoire La mémoire est indexée octet par octet. Ex. : int TOTO = 256 (Décimal) = 00 00 01 00 (Hexadécimal) Adresse mémoire (offset) (indexée octet par octet) : Donnée 00000000 : 00 00000001 : 01 00000002 : 00 00000003 : 00 6. Implantation de la pile en RAM. Squelette d un programme assembleur sous Visual C++. Pile (= LIFO).Ordres de manipulation de pile : PUSH (empilement) et POP (dépilement)..le pointeur de pile (Stack Pointer) SP : repère la position courante du sommet de la pile. 4 champs constituent une instruction assembleur : 1. Champ étiquette 2. Champ instruction 3. Champ opérande 4. Champ commentaire Exemple : Empilement de(ax), puis dépilement dans le registre BX. Supposons : (ESP) = 0064FDE4 avant manipulation de la pile TR 1. 11

// Squelette d'un pgm assembleur pour Visual C++ // Exemple de manipulation de la pile #include <stdio.h> void main() { // Partie C Les déclarations des données de l'asm se font dans la partie C short int Toto = 255; // Toto = 255 Décimal = 00 FF Hexa unsigned char Titi; printf("\n Toto = % d", (int) Toto); // Partie assembleur Minuscules et majuscules indifférentes asm { mov ax, Toto // Toto -> AX : (AX) = 255 = 00 FF EtatPile#1 push ax // Empilement de (AX) : (AX) (AX) EtatPile#2 label: pop bx // Depilement dans BX : (BX) = 00 FF EtatPile#3 mov Titi, bl // (BL) -> Titi : Titi = 255 = FF } // Partie C printf("\n Titi = % d\n", (int) Titi); } Etat de la pile : 0064FDE4 0064FDE3 0064FDE2 (ESP)+2 (ESP)+1 (ESP) (ESP)-1 (ESP)-2 EtatPile#1 PUSH AX (ESP) EtatPile#2 00 FF POP BX (ESP) EtatPile#3 Résultat de l exécution Toto = 255 Titi = 255 TR 1. 12

7. Jeu d instructions (instructions principales) INSTRUCTIONS DE TRANSFERT INSTRUCTIONS SYSTEME MOV PUSH POP XCHG XLAT LEA L LES IN OUT LAHF SAHF PUSHF POPF INSTRUCTIONS LOGIQUES SHL SAL SHR SAR ROL RCL ROR RCR NOT TEST AND OR XOR CMP CBW CWD INSTRUCTIONS DE TEST et BRANCHEMENT CALL RET JMP J?? JN? LOOP LOOPE LOOPNE JCXZ REP REPE REPNE INT INTO IRET HLT WAIT ESC LOCK STC STD STI CLC CLD CLI CMC NOP INSTRUCTIONS ARITHMETIQUES ADD ADC INC AAA DAA SUB SBB DEC AAS DAS DIV IDIV AAD MUL IMUL AAM NEG SUFFIXES A, G E B, L C Z O P S INSTRUCTIONS DE CHAÎNES CMPS SCAS LO STOS MOVS TR 1. 13

9. Exemple de pgm : calcul du maximum d un vecteur #include <stdio.h> char VECT[5]; char RES; char Chaine; int MaxElemVect; void main (void) { int NbElem = 5; VECT[0] = 2; VECT[1] = 3; VECT[2] = 1; VECT[3] = 7; VECT[4] = 0; // Debut de la partie assembleur asm { MOV ECX, NbElem ; (ECX)=NbElem DEC ECX MOV ESI, 0 ; i := 0 MOV AL, VECT[ESI] ; (AL) = MAX = VECT[0] INC ESI ; i := 1 NEXT: MOV AH, VECT[ESI] ; (AH) = VECT[i] CMP AL, AH JGE SUP ; MAX >= VECT[i]? MOV AL, AH ; MAX < VECT[i] (AL) = VECT[i] SUP: INC ESI ; MAX >= VECT[i] i = i + 1 LOOP NEXT ; (ECX) = (ECX) - 1 MOV RES, AL ; (AL) RES } // Fin de la partie assembleur MaxElemVect = RES; printf ("\nelement maximum du vecteur = %d\n\n", MaxElemVect); } TR 1. 14

TR 1. 15