La couche ISA (Instruction Set Architecture)

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

Architecture des ordinateurs

Programmation assembleur : aperçu

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

Structure d un programme

Rappels d architecture

Architecture des ordinateurs

Compilation (INF 564)

CM2 L architecture MIPS32

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Logiciel de base. Première année ENSIMAG

4. Initiation à l'assembleur

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

Département informatique de l université d Angers

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

Conception de circuits numériques et architecture des ordinateurs

ASR1 TD7 : Un microprocesseur RISC 16 bits

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

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

Ordinateurs, Structure et Applications

Déprotection semi-automatique de binaire

Licence Sciences et Technologies Examen janvier 2010

Jeu d instructions NIOS II

Exécution des instructions machine

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

Microprocesseur + Logiciel

Représentation des Nombres

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

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

Désobfuscation automatique de binaire - The Barbarian Sublimation

Informatique Générale

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

IFT1215 Introduction aux systèmes informatiques

Architecture des Ordinateurs. Partie II:

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

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

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

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

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Chapitre 10 Arithmétique réelle

V- Manipulations de nombres en binaire

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

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

Architecture des ordinateurs Introduction à l informatique

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

Fonctionnement et performance des processeurs

Les opérations binaires

Conversion d un entier. Méthode par soustraction

AVERTISSEMENT. D'autre part, toute contrefaçon, plagiat, reproduction encourt une poursuite pénale. LIENS


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

Chapitre VI- La validation de la composition.

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

IFT2880 Organisation des ordinateurs et systèmes

Logiciel de Base. I. Représentation des nombres

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

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

Cours 1 : La compilation

Algorithmique et Programmation, IMA

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

Mathématiques appliquées à l informatique

Architecture de l ordinateur

Architecture matérielle des systèmes informatiques

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

Représentation d un entier en base b

Initiation à la sécurité

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

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

GlobalScape Secure FTP Server Buffer Overflow

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

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

Les techniques de protection du logiciel

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Comprendre telock 0.98 et private versions.

Conventions d écriture et outils de mise au point

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Le langage C. Introduction, guide de reference

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

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

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

GL Le Génie Logiciel

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

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

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

Introduction à MATLAB R

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

Rappels réseaux TCP/IP

Probabilités sur un univers fini

PIC : COURS ASSEMBLEUR

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

Architecture des ordinateurs

TP a Notions de base sur le découpage en sous-réseaux

CONFIGURATION DE L AUTOMATE SIEMENS

Transcription:

Architecture des ordinateurs Cours 5 La couche ISA (Instruction Set Architecture) 19 novembre 2012 Rappel : architecture en couches Archi 1/21 RISC vs. CISC Archi 2/21 5. Langages haut niveau Compilation 4. Langage d assemblage Assembleur 3. Système d exploitation Appels système 2. Jeu d instructions propre à chaque machine (ISA) Microprogrammes : micro-instructions binaires 1. Micro-architecture (UAL, opérations, registres,...) Assemblage physique des portes logiques 0. Circuits logiques 2 grandes catégories de processeurs, qui se distinguent par la conception de leurs jeux d instructions : CISC (Complex Instruction Set Computer) jeu étendu d instructions complexes 1 instruction peut effectuer plusieurs opérations élémentaires (ex : charger une valeur en mémoire, faire une opération arithmétique et ranger le résultat en mémoire) instructions proches des constructions typiques des langages de haut niveau Exemples : Motorola 68000, x86 Intel, AMD... RISC (Reduced Instruction Set Computer) jeu d instructions réduit 1 instruction effectue une seule opération élémentaire (micro-instruction) plus uniforme (même taille, s exécute en un cycle d horloge) Exemples : Motorola 6800, PowerPC, UltraSPARC (Sun),... Archi 3/21 Archi 4/21

Architecture IA-32 et Assembleur Registres généraux (32 bits) Intel Architecture 32 bits : architecture des Pentium. Aussi appelée x86 (architecture de l ensemble des processeurs Intel à partir du 8086). Assembleur = programme convertissant les instructions du langage d assemblage en micro-instructions. Remarque : compilateur = programme similaire pour les langages de haut niveau (C, Java,...). Chaque type de processeur a son propre langage machine il a également son propre assembleur. EAX : registre accumulateur (accumulator reg.) pour les opérations arithmétiques et le stockage de la valeur de retour des appels systèmes. ECX : registre compteur (counter reg.) EBX : registre de base (base reg.) EDX : registre de données (data reg.) pour les opérations arithmétiques et les opérations d E/S. AX : 16 bits de poids faible de EAX (idem BX, CX, DX) AL : octet de poids faible de AX (idem BL, CL, DL) AH : octet de poids fort de AX (idem BH, CH,DH) En TP : NASM (Netwide Assembler) EAX AH AX AL Registres spécialisés (32 bits) Archi 5/21 Drapeaux Archi 6/21 Registres d adresses ESI : pointeur source (Extended Source Index) EDI : pointeur destination (Extended Destination Index) EBP : pointeur de base (Extended Base Pointer) ESP : pointeur de pile (Extended Stack Pointeur) Autres registres EIP : pointeur d instruction EFLAGS : registre d états (drapeaux) CS, SS, DS, ES, FS, GS : registres de segment (16 bits) : adresses et données de programme Archi 7/21 Zero Flag (ZF) 1 si les deux opérandes utilisés sont égaux, 0 sinon. Overflow Flag (OF) 1 si le dernier résultat a provoqué un overflow, 0 sinon. Carry Flag (CF) 1 si la dernière opération a générée une retenue (mode positif), 0 sinon. Sign Flag (SF) 1 si la dernière opération a générée un résultat négatif, 0 s il est positif ou nul. Parity Flag (PF) 1 si la dernière opération a générée un résultat impair, 0 s il est pair (nombre de bits à 1). Interrupt Flag (IF) 1 si les interruptions sont autorisées, à 0 sinon. Archi 8/21

Format d instruction et d opérandes INSTRUCTION = OPÉRATION suivi d OPÉRANDES (de 0 à 3) une opérandes est : soit une donnée brute : adressage immédiat : valeur binaire, décimale ou hexadécimale Exemples : mov eax, 16 (décimal) b11 (binaire) xff (hexadécimal) adressage implicite : pas spécifié explicitement, par exemple l incrémentation (le 1 est implicite) soit une adresse : avec différents modes d adressage.! les types d opérandes autorisés dépendent de l opération effectuée. Notation : A : adresse A [A] : donnée à l adresse A Instructions x86 Archi 9/21 Mode d adressage Les opérandes peuvent avoir les types suivants : adressage direct : l opérande est une adresse (32 bits) en mémoire. désigne toujours le même emplacement, mais la valeur correspondante peut changer (ex : variable globale) Exemple : mov eax, [0x0000f13a] adressage par registre : l opérande est un registre. mode le plus courant (+ efficace) Exemple : mov eax, ebx adressage indirect par registre : l opérande une adresse mémoire contenue dans un registre (qui sert de pointeur) Exemples : mov eax, [esp] (eax sommet de la pile)!! mov eax, esp (eax adresse du sommet) adressage indexé : l opérande une adresse mémoire contenue dans un registre associée à un décalage Exemple : mov eax, [esp+4] Instructions de transfert Archi 10/21 Grandes catégories d opérations : Opérations de transfert : entre la mémoire et les registres ; opérations sur la pile. Opérations arithmétiques Opérations logiques Opérations de décalage et rotation multiplications et divisions rapides Opérations de branchement sauts, boucles, appels de fonctions Opérations sur les chaînes de caractères Copie de données entre mémoire et registres : mov Le 1er argument est toujours la destination et le 2nd la source Restriction sur le type d opérandes : mov registre, mémoire mov mémoire, registre mov registre, registre (registres de même taille!) mov type mémoire, immédiate (type=byte, word, dword) mov registre, immédiate mov mémoire, mémoire impossible!! Instruction spéciale pour échanger les contenus de 2 registres ou d un registre et d une case mémoire : xchg Exemples : xchg eax, ebx xchg eax, [0xbgfffeedc] Archi 11/21 Archi 12/21

Instructions de transfert (suite) Instructions arithmétiques Opérations de pile : push et pop adressage immédiat ou par registre Exemples : push pop eax ebx!! la pile est à l envers : si esp est l adresse du sommet de la pile, alors l élément en dessous est [esp+4] Instruction Description push word 42 pop word [adr] mov dst src déplace src dans dst xchg ds1 ds2 échange ds1 et ds2 push src place src au sommet de la pile pop dst supprime le sommet de la pile et le place dans dst Archi 13/21 Instructions arithmétiques (suite) Multiplication entière en cplt à 2 : imul mêmes caractéristiques que mul avec des entiers relatifs add dst src ajoute src à dst adc dst src ajoute src à dst avec retenue sub dst src soustrait src à dst sbb dst src soustrait src à dst avec retenue mul src multiplie eax par src (résultat dans edx eax) imul src multiplie eax par src (cplt à 2) div src divise edx eax par src (eax=quotient, edx=reste) idiv src divise edx eax par src (cplt à 2) inc dst 1 + dst dec dst dst 1 neg dst dst Addition entière (en cplt à 2) : add 2 opérandes : destination et source : valeurs, registres ou mémoire (au moins 1 reg.) positionne les FLAGS : Carry (CF) et Overflow (OF) Exemples : add ah, bl add ax, bl opérandes imcompatibles! Addition avec retenue : adc additionne les 2 opérandes et la retenue positionnée dans CF Exemple : adc eax, ebx (eax eax+ebx+cf) Multiplication entière positive : mul 1 seule opérande : multiplication par eax le résultat est stocké dans deux registres : edx pour les bits de poids fort et eax pour les bits de poids faible Exemple : mul ebx (edx eax eax ebx) Instructions logiques Archi 14/21 Les opérations logiques sont des opérations bit à bit. Et logique : and 2 opérandes : destination et source Exemple : Utilisation d un masque pour l extraction des 4 bits de poids faible de ax : and ax, 0b00001111 not dst place (not dst) dans dst and dst src place (src AND dst) dans dst or dst src place (src OR dst) dans dst xor dst src place (src XOR dst) dans dst Archi 15/21 Archi 16/21

Instructions de décalage/rotation Instructions de décalage/rotation (suite) 2 opérandes : un registre suivi d un nombre de décalages nb. Décalage logique à gauche : shl Insertion de nb 0 au niveau du bit de poids faible. Permet d effectuer efficacement la multiplication par 2 nb. Exemple : shl al, 4 (ex : 01100111 01110000) Décalage arithmétique à droite : sar Insertion de nb copies du bit de poids fort à gauche. Permet la division rapide d un entier relatif par 2 nb. Exemple : sar al, 4 (ex : 10011110 11111001) Rotation à gauche : rol rotation de nb bits vers la gauche : les bits sortants à gauche sont immédiatement réinjectés à droite. exemple : rol al, 3 (ex : 10011111 11111100) Instructions de branchement Instruction de comparaison : cmp Archi 17/21 Effectue une soustraction (comme sub), mais ne stocke pas le résultat : seuls les drapeaux sont modifiés. Exemple : cmp eax, ebx (si eax=ebx, alors ZF=1) Saut conditionnel vers l étiquette spécifiée : jxx je, jne : jump if (resp. if not) equal saute si le drapeau d égalité (positionné par cmp) est à 1 (resp. à 0). jge, jnge : jump if (resp. if not) greater or equal saute si le résultat de cmp est (resp. n est pas) plus grand ou égal à. jl, jnl : jump if (resp. if not) less than saute si le résultat de cmp est (resp. n est pas) stt plus petit que. jo, jno : jump if (resp. if not) overflow jc, jnc : jump if (resp. if not) carry jp, jnp : jump if (resp. if not) parity jcxz, jecxz jump if cx (resp. ecx) is null sautent quand le registre cx (resp. ecx) est nul Archi 19/21 Rotation à droite avec retenue : rcr Rotation de nb bits vers la droite en passant par la retenue : lors d un décalage, le bit sortant à droite est mémorisé dans la retenue qui est elle-même réinjectée à gauche. Exemple : rcr al, 3 (ex : 11111101, c = 0 01011111, c = 1) sal dst nb décalage arithmétique à gauche de nb bits de dst sar dst nb décalage arithmétique à droite de nb bits de dst shl dst nb décalage logique à gauche de nb bits de dst shr dst nb décalage logique à droite de nb bits de dst rol dst nb rotation à gauche de nb bits de dst ror dst nb rotation à droite de nb bits de dst rcl dst nb rotation à gauche de nb bits de dst avec retenue rcr dst nb rotation à droite de nb bits de dst avec retenue Archi 18/21 Instructions de branchement (suite) Boucle fixe : loop ecx ecx-1 et saute vers l étiquette si ecx 0. Boucle conditionnelle : loope ecx ecx-1 et saute vers l étiquette si ZF = 1 et ecx 0. Boucle conditionnelle : loopne ecx ecx-1 et saute vers l étiquette si ZF = 0 et ecx 0. cmp sr1 sr2 compare sr1 et sr2 jmp adr saut vers l adresse adr jxx adr saut conditionné par xx vers l adresse adr loop adr répétition de la boucle nb de fois (nb dans ecx) loopx adr répétition de la boucle conditionnée par x Archi 20/21

Exemples mov ecx, [esp] mov ecx, [esp] next: add eax, ecx dec ecx cmp ecx, 0 jne next next: add loop eax, ecx next test: jecxz add dec jump end: mov ecx, [esp] end eax, ecx ecx test mov ebx, [esp] mov ecx, 100 next: add eax, ecx dec ebx cmp ebx, 0 loopne next Archi 21/21