Langages d assemblage. Charles André Université de Nice Sophia Antipolis

Documents pareils
Compilation (INF 564)

Rappels d architecture

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

Programmation assembleur : aperçu

Structure d un programme

CM2 L architecture MIPS32

Architecture des ordinateurs

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


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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Exécution des instructions machine

Rappels Entrées -Sorties

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

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)

Conception de circuits numériques et architecture des ordinateurs

Algorithmique et Programmation, IMA

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

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

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Génération de code binaire pour application multimedia : une approche au vol

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

Plan du cours. Historique du langage Nouveautés de Java 7

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

Algorithme. Table des matières

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

Conventions d écriture et outils de mise au point

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

Informatique Générale

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

Jeu d instructions NIOS II

Initiation à l algorithmique

Représentation d un entier en base b

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

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

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

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

Gestion mémoire et Représentation intermédiaire

Cours d algorithmique pour la classe de 2nde

Analyse de sécurité de logiciels système par typage statique

Cours d Algorithmique et de Langage C v 3.0

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

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

Programmation en langage C

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

Cours 1 : La compilation

Département informatique de l université d Angers

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

ALGORITHMIQUE ET PROGRAMMATION En C

as Architecture des Systèmes d Information

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

Le langage C. Introduction, guide de reference

Notions fondamentales du langage C# Version 1.0

Programmation C++ (débutant)/instructions for, while et do...while

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Méthodologie de la programmation

Architecture des ordinateurs

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

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

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

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

Traduction des Langages : Le Compilateur Micro Java

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

1. Structure d'un programme FORTRAN 95

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

Logiciel de Base. I. Représentation des nombres

Logiciel Libre Cours 2 Fondements: Programmation

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

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

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

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Utilisation d objets : String et ArrayList

Chapitre 10 Arithmétique réelle

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Cours de Programmation 2

Langage Éric Guérin 5 octobre 2010

Cours Informatique 1. Monsieur SADOUNI Salheddine

Introduction au langage C

Algorithmique et programmation : les bases (VBA) Corrigé

L ALGORITHMIQUE. Algorithme

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

Cours Informatique Master STEP

IV- Comment fonctionne un ordinateur?

Classes et Objets en Ocaml.

Logiciel de base. Première année ENSIMAG

TP 1. Prise en main du langage Python

Programmation avec Xcas ou Python

Architecture de l ordinateur

SUPPORT DE COURS. Langage C

4. Initiation à l'assembleur

Java Licence Professionnelle CISII,

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Corrigé des TD 1 à 5

Claude Delannoy. 3 e édition C++

Transcription:

Langages d assemblage

Introduction Algorithme C compilateur Langage d assemblage assembleur Programme en langage machine

Introduction (2) Langage machine Jeu d instructions Modes d adressage Codage des instructions Suite de tableaux de bits Langage d assemblage Notation textuelle Introduction de mécanismes de nommage Langage haut niveau Structures +

Introduction (3) Nécessité pour un langage d assurer un modèle de calcul universel Définir une syntaxe Donner une sémantique Pour le langages machine et les langages d assemblage on utilise une sémantique d actions Notations : MEM[ ], REG[ ],, + C

Notation pour la sémantique

Compilation C C preprocessor Front-end (syntax & semantic analysis) Back-end (code generator) Link-loader Assembler Optimizer

Langage d assemblage Proche du langage machine, mais humainement plus lisible et manipulable Ex: mov ax,2 0xB80200 add ax,3 0x050300 Apports : 1. Notation textuelle Mnémoniques pour les opérations Identificateurs et expressions pour les opérandes 2. Directives Réservations, initialisations mémoires Imposer certains choix

Langage d assemblage (2) 3. Commentaires 4. Séparation plus claire des données et instructions TEXT zone des instructions DATA, BSS zones des données Mécanisme de nommage des positions dans les zones permettant de faire abstraction des valeurs explicites d adresses mémoire.

Remarque A un processeur on peut associer plusieurs langages d assemblage Notion de famille de processeurs (style Intel, Motorola, ) Nous verrons des exemples de Intel (x86 et Pentium) Motorola (68k, 68HC11) RICS(SPIM, Spark)

Le plus simple: Exemples Calculer C = A B pour A et B entiers Un peu plus élaboré: Calculer le pgcd de deux entiers positifs A et B

C = A - B load A sub B store C Ex: A=12; B=18

C = A B (pentium).data a dd 12 b dd 18 c dd?.code mov eax, [a] ; eax A sub eax, dword ptr [b] ; eax eax - B mov [c], eax ; C eax

Algorithme Calcul pgcd: Données: A, B entiers positifs Résultat: pgcd(a,b) Tant que A B faire Si A > B alors A A B Sinon B B A Fsi Fait Pgcd A Pre-condition: A>0 et B>0 Invariant de boucle: A>0 et B>0 Post-condition: A = B

Pgcd (C) // gcd(a,b) // Charles André // February 12, 2002 int a=12, b=18, gcd; int main () { while ( a!= b ) { if ( a > b ) a = a b; else b = b a; } gcd = a; }

Pgcd sur machine à accumulateur load A store C ; C <- A load B store D ; D <- B bcl: sub C ; accu = B A beqz done bltz then ; branch if B <A store D ; B <- B A bt bcl then: neg ; accu = A B store C ; A <- A B load D ; accu = B bt bcl done: load C ; accu <- A store gcd ; result

Pgcd (Pentium) bcl: mov eax,[a] cmp eax,dword ptr [b] je done ; go to done if a == b mov ecx,dword ptr [a] cmp ecx,dword ptr [b] jle else ; go to else if a <= b mov edx,dword ptr [a] sub edx,dword ptr [b] mov dword ptr [a],edx ; a <- a - b jmp bcl ; iterate else: mov eax,dword ptr [b] sub eax,dword ptr [a] mov [b],eax ; b <- b - a jmp bcl ; iterate done: mov ecx,dword ptr [a] ; result in a mov dword ptr [gcd], ecx ; store it in gcd

Pgcd (SPIM).data va:.word 12 vb:.word 18 gcd:.word 0.text.globl main main: lw $t0,va # t0 <- va lw $t1,vb # t1 <- vb bcl: beq $t0,$t1,done blt $t0,$t1,else # go to else if va<vb sub $t0,$t0,$t1 # va <- va vb j bcl else: sub $t1,$t1,$t0 # vb <- vb va j bcl done: sw $t0,gcd # gcd <- result li $v0,10 # magic: exit syscall

Aspects lexicographiques Commentaires Depuis un symbole jusqu à la fin de la ligne Pentium: ; 68HC11: * ou après instruction complète SPIM: ;... C // Notation de constantes en plusieurs bases Décimale Octale O (Intel) 0 Héxadécimale $... (Motorola) h (Intel) 0x Binaire %... (Motorola) b (Intel)

Aspects lexicographiques (2) Macro assembleur Substitutions textuelles Constantes textuelles Motorola foo EQU value Macros avec paramètres Dans les assembleurs plus évolués

Structuration des programmes Distinction de zones ou segments Zone d instructions : TEXT Zone de données : Données initialisées : DATA Données non initialisées : BSS BSS = Block Started by Symbol (original acronym) I prefer Better Save Space

Mapping C statements to Segments char buf[80]; static double D; unsigned linenb = 0; static long L = 100000; int main ( ) { Source file int i, k, *pi; a.out file a.out magic number other a.out contents size needed for BSS segment data segment initialized global and static variables } pi = malloc(sizeof(i)); linenb += k; text segment executable instructions Local variables don t go in a.out, but are created at run-time

Nommage des adresses Pour repérer des instructions dans la zone TEXT ou des données dans les zones DATA ou BSS Etiquettes (ou Labels) Problème de l assembleur de calculer les adresses (relatives ou absolues). Notion de programme relogeable

instructions [étiquette] mnémonique [operande1 [,operande2.]] [commentaires] Mnémonique Acronyme: ASL (Arithmetic Shift Left) Abréviation: ADD (Addition) Opérandes Registres: nom Constantes: valeurs immédiates Désignation d adresses en mémoire Grande variété de notations suivant les assembleurs, Danger: ordre des opérandes Src, Dest Dest, Src pour Motorola pour Intel, SPIM

Pseudo-instructions Ce sont des instructions supportées par l assembleur, mais pas directement implantées par une instruction en langage machine. Exemple en SPIM: blt a,b,less ; go to Less if a < b Est transformé en slt $at,a,b ; REG[at] (a < b) bne $at,$zero,less ; go to Less if at 0

Zones et directives de réservation de mémoire Intel :.data étiquette directive valeur? directive DBIT variables de type bit DB variables de type byte (8) DW variables de type word (16) DD variables double word (32) DP variables de type pword (48) DQ variables quad word (64) DT variables de ten byte (80)

Zones et directives de réservation de mémoire (2) 68HC11 : Non initialisée : Reserve Memory Byte étiquette RMB entier Initialisée : Form Double Byte étiquette FDB valeur Form Constant Byte étiquette FCB valeur Form Constant Char étiquette FCC chaine

Assembleur C est le programme chargé de traduire le langage assembleur en langage machine 3 fonctions principales 1. Analyse lexicale et syntaxique Détecte des erreurs Extension de macros si nécessaire 2. Codage en binaire 3. Traduction des étiquettes en adresses absolues ou en déplacements Table des symboles